← Back to team overview

dubuntu-team team mailing list archive

cli frontend

 

hi guys.

it will take me a day or two to bring the front end to some good shape
so that we could start working on it in bzr.

now i'd like to show you some basic commands that the front end will
support. i call it dpm. and here's a console dump:

$ dpm help
dpm should be invoked using this format:

dpm <command> [<arguments>]

where <command> is one of the following:

help - view short description of dpm usage,
open - open a package category,
close - close a previously open package category,
list - output a list of items inside a package category,
create - add a category or package to local database,
destroy - remove a category or package from local database,
read - show description of a category or package,
write - update description of a category or package,
install - install a category or package,
remove - remove a category or package.

you can type 'gpm help <command>' to view description of a specific
command.
$

and here's an explanation. first of all a (local/central) database will
contain a treelike hierarchy of packages and package categories - much
like a filesystem. currently dpm supports absolute paths
(e.g. /category/package) and a subset of relative paths -
e.g. ./category/package but not ../category/../../package.

system administrators will be free to do everything they want with local
databases. dpm will provide a way to share some part or entire
configuration over internet and to synchronize with our central database
or other databases. the central database will be hosted on our website
and clients will connect to it using a webservice. for now we will
concentrate on synchronization and later we will talk about sharing. i
mean if i'm an opengl guy and i know what is needed to develop opengl
apps in c++ i could create a category '/programming/opengl/c++' in my
local database, populate it with relevant items and share it with the
entire community.

now back to the commands.

'open' works much like 'cd'. it updates DPM_CURRENT_LOCATION environment
variable which is used as a prefix for relative paths.

'close' unsets DPM_CURRENT_LOCATION. when it's not set current location
is '/' and relative paths are resolved relative to the root.

'create' works this way:
$ dpm create <name> [title=]<title> [info=]<info> ...

if <name> ends with a forward slash then it's treated as a category name
- otherwise as a package name. i'll provide more info about available
fields as soon as it's possible.

i think that 'destroy' doesn't need an explanation. it just deletes
approp. record from the database.

'read' either reads all the fields for a given <name> or if supplied by
a list of field names fetches and displays only those. 'write' allows
you to update either entire record or certain fields only.

'dpm write <name> name=<new_name>' can be used to rename a package or
category.

install/remove are quite self-explanatory.

a real-world example:

$ dpm open /programming/languages/c/compilers
$ dpm list
cc
gcc
$ dpm create mycc title="My C Compiler" info="blah blah blah"
version=...
$ dpm list
cc
gcc
mycc
$ dpm install mycc
...

current progress:

help, open, close - done.
list - almost done.
create, destroy, read, write - half done.
install, remove - i will make some additional research before
implementing them.

about downloading:
currently all debian utilities don't provide any way to
stop/resume/control downloading so if you're downloading your favorite
movie but suddenly you decide to update your system you can be sure the
the first download will either break or its speed will drop down to
almost zero. all our front ends must provide a way to stop/pause
downloading.

how installation works: dpm reads approp. database record, extracts
debian repo url, downloads a package and passes it to dpkg. pretty
simple. maybe i will use apt in some way to handle repository catalogs,
certificates etc. this is currently what i'm trying to learn about.

conclusion:
it's just a sketch and many things will be changed but we just need to
start with something. so how do you like it?

regards,
jay




Follow ups