On Mon, May 23, Marcus Hüwe wrote: Please keep in mind, that osc is an api to access obs. People might use osc to integrate with obs as I do. When you break the osc api at least for me that will result in a bigger mess. That might be valid for others, too. Instead of breaking the api of the existing osc, I'd suggest to create a new osc (e.g. osc2 or whatever) and keep the old one for a while.
Hi,
as a part of our Google Summer of Code Project to cleanup osc [1] our first task was to define a new commandline user interface for osc. The current user interface is quite "inconsistent" (with regard to the expected arguments for different commands) and has some other "flaws". Here are some examples to show some flaws of the current user interface:
* inconsistent ui: - osc results project package --repo repo --arch arch - osc rebuild project package repo arch - osc build repo arch - osc ls project package repo arch -b - osc ls project package -r repo -a arch -b - osc undelete project package_1 ... package_N - osc rdelete project package_1
* counterintuitive commands: - osc abortbuild project package - osc abortbuild project package repo arch - osc abortbuild (in a package working copy) - osc abortbuild --repo repo --arch arch (in a package working copy) - osc abortbuild repo arch (in a package working copy) => treats "repo" "arch" as "project" "package"
* "duplicated" commands: - diff, rdiff - buildlog, remotebuildlog, localbuildlog - delete, rdelete, rremove
Additionally we support lots of commands and the output of "osc --help"is quite long. In order to tackle this problem we decided to introduce "groups" with subcommands, for instance: attribute list attribute create... attribute set... ...
As a result we get rid of "god commands" (commands which supported lots of different options for different things (like osc meta)) and the new commands are easier to use because they support less arguments and/or options (note: this doesn't mean we lose functionality - the functionality is just moved to another command/command group).
The attached files are just a _proposal_ for a new commandline user interface.
Some additional explanations:
The biggest change with regard to our current user interface is the introduction of an url-like syntax: For example: osc ls api://project/package instead of osc ls project package
In this case "api" means that the request is issued to the default apiurl (in most cases https://api.opensuse.org) which can be configured in the ~/.oscrc. To issue the "list" request to a different obs instance one can use: osc ls https://api.somehost/project/package or osc ls alias://project/package "alias" is an alias for this apiurl which can be configured in the ~/.oscrc.
If you see this url-like syntax for the first time you might think that it makes things much more complicated (and even more to type) but it is advantageous:
- in most cases it is obvious if a command is a remote command or local working copy command - this way we get rid of ambiguities: Suppose we support the following command ("<foo>" indicate that "foo" is an optional argument): binaries get api://project/package <repo/arch> binaries get <repo/arch> (if $PWD is a package working copy the project and package arguments will be read from it)
Possible invocations are: osc binaries get api://foo/bar standard/i586 # get all binaries for this repo and arch osc binaries get api://foo/bar # get all binaries for all repos and all arches
# now suppose $PWD is a package working copy: osc binaries get standard/i586 # get all binaries for this repo and arch (project and package are read from the working copy)
osc binaries get api://foo/bar # gets all binaries for all repos and all arches (project is "foo" and package is "bar")
In the latter invocation we're still in a package working copy but ignore it and use the project and package arguments which were specified.
Note: in this case a special (like the url-like) syntax is required otherwise osc is unable to distinguish between a project/package and repo/arch argument.
Once again this is just a _proposal_ - feedback is very welcome!
Marcus
[1] http://www.google-melange.com/gsoc/project/google/gsoc2011/mhuewe/13001
The attached ui.html.gz file can be used to navigate easier through the list of commands (I just gzip'ed it to make mlmmj happy). The attached ui.txt file is just generated via "w3m -dump ui.html".
init, list, meta, attribute, request, submitrequest, review, link, copy, maintenance, branch, delete, undelete, diff, checkout, status, add, addremove, commit, update, resolved, distributions, results, buildlog, buildmeta, build, chroot, log, service, abortbuild, rebuild, binaries, search, my, importsrcpkg, person, cat, less, repair, pull, signkey, vc, mv, config, revert, api, aggregate, mkpac, setlinkrev, linktobranch, detachbranch
setlinkrev, linktobranch and detachbranch might be grouped into group "other". Deleted commands:
┌──────────────────────┬──────────────┬───────────────────────────────────────┐ │ cmd │ replacement │ reason │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │deleterequest args │request create│ │ │ │--delete args │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │ │request create│ │ │reqeuestmaintainership│--role │ │ │args │maintainer │ │ │ │args │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │changedevelrequest │request create│ │ │args │--changedevel │ │ │ │args │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │request approvenew │ │request --interactive-review could be │ │project <package> │ │used (but it's no real replacement) │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │request log id │request show │ │ │ │id --log │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │linkpac │link │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │copypac │copy │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │releaserequest │maintenance │ │ │ │releaserequest│ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │createincident │maintenance │ │ │ │createincident│ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │maintenancerequest │maintenance │ │ │ │request │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │mbranch │maintenance │ │ │ │branch │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │getpac │ │use branch │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │rdelete │delete │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │updatepacmetafromspec │ │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │rdiff │diff │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │ │ │no replacement atm (current │ │linkdiff │ │implementation partly broken); diff │ │ │ │could support it │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │repourls │ │isn't needed IMHO │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │prjresults │results │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │remotebuildlog │buildlog │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │localbuildlog │buildlog │ │ │ │--local │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │buildinfo │buildmeta info│ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │buildconfig │buildmeta │ │ │ │config │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │triggerreason │buildmeta │ │ │ │triggerreason │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │dependson │buildmeta │ │ │ │dependson │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │buildhistory │buildmeta │ │ │ │history │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │jobhistory │buildmeta │ │ │ │jobhistory │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │info │ │not needed anymore │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │getbinaries │binaries get │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │wipebinaries │binaries wipe │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │list --binaries │binaries list │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │search --binary │binaries │ │ │ │search │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │bugowner │ │no real replacement use person │ │ │ │maintainer -b (if we support this) │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │maintainer │person │ │ │ │maintainer │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │maintainer project │person add │ │ │--add user --role role│api://project │ │ │ │role user │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │maintainer project │person delete │ │ │--delete user │api://project │ │ │ │user │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │whois │person meta │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │meta user │person meta │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │cat/less http://api/ │ │ │ │source/project/package│ │not needed (IMHO) │ │/file │ │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │repairlink │repair link │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │repairwc │repair wc │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │signkey │signkey │it's not context-sensitive anymore │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │rremove │ │do we really need this? │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │aggregatepac │aggregate │ │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │ │ │meta should display the xml in a nice │ │develproject │meta │way so that it's easy to see whether a │ │ │ │develprj is defined or not │ ├──────────────────────┼──────────────┼───────────────────────────────────────┤ │repositories │meta │meta should display the xml in a nice │ │ │ │way so that all repos are displayed │ └──────────────────────┴──────────────┴───────────────────────────────────────┘
new commandline user interface
init
┌────┬──────┬──────┬──────┬─────────────────────┬────┐ │cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├────┼──────┼──────┼──────┼─────────────────────┼────┤ │init│ │ │ │api://project │ │ ├────┼──────┼──────┼──────┼─────────────────────┼────┤ │init│ │ │ │api://project/package│ │ └────┴──────┴──────┴──────┴─────────────────────┴────┘
list
┌───┬──────┬─────┬─────┬────────────────────┬─────────────────────────────────┐ │cmd│subcmd│ prj │ pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├───┼──────┼─────┼─────┼────────────────────┼─────────────────────────────────┤ │ls │ │x │ │ │list all remote packages for the │ │ │ │ │ │ │wc project │ ├───┼──────┼─────┼─────┼────────────────────┼─────────────────────────────────┤ │ls │ │ │x │ │list all remote files for the wc │ │ │ │ │ │ │package │ ├───┼──────┼─────┼─────┼────────────────────┼─────────────────────────────────┤ │ls │ │ │ │api:// │ │ ├───┼──────┼─────┼─────┼────────────────────┼─────────────────────────────────┤ │ls │ │ │ │api://project │ │ ├───┼──────┼─────┼─────┼────────────────────┼─────────────────────────────────┤ │ls │ │ │ │api://project/ │ │ │ │ │ │ │package │ │ ├───┼──────┼─────┼─────┼────────────────────┼─────────────────────────────────┤ │ls │ │ │ │api://project/ │just for backward compatibility │ │ │ │ │ │package/file │ │ └───┴──────┴─────┴─────┴────────────────────┴─────────────────────────────────┘
meta
┌────┬──────┬──────┬──────┬──────────────────────┬────────────────────────┐ │cmd │subcmd│prj wc│pkg wc│ params/opts │ note │ ├────┼──────┼──────┼──────┼──────────────────────┼────────────────────────┤ │meta│ │x │ │ │shows/edits project meta│ ├────┼──────┼──────┼──────┼──────────────────────┼────────────────────────┤ │meta│ │ │x │ │shows/edits package meta│ ├────┼──────┼──────┼──────┼──────────────────────┼────────────────────────┤ │meta│ │ │ │api://project │ │ ├────┼──────┼──────┼──────┼──────────────────────┼────────────────────────┤ │meta│ │ │ │api://project/package │ │ ├────┼──────┼──────┼──────┼──────────────────────┼────────────────────────┤ │meta│ │ │ │api://project/_prjconf│ │ └────┴──────┴──────┴──────┴──────────────────────┴────────────────────────┘
attribute
┌─────────┬──────┬───┬───┬───────────────────┬────────────────────────────────┐ │ cmd │subcmd│prj│pkg│ params/opts │ note │ │ │ │wc │wc │ │ │ ├─────────┴──────┴───┴───┴───────────────────┴────────────────────────────────┤ │attribute is not context sensitive │ ├─────────┬──────┬───┬───┬───────────────────┬────────────────────────────────┤ │attribute│list │ │ │api://project │show all attributes │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│list │ │ │api://project │show specific attribute │ │ │ │ │ │attribute │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│set │ │ │api://project │set attribute to newval │ │ │ │ │ │attribute newval │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│create│ │ │api://project │create new attribute │ │ │ │ │ │attribute │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│delete│ │ │api://project │delete attribute │ │ │ │ │ │attribute │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│list │ │ │api://project/ │show all attributes │ │ │ │ │ │package │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │ │ │ │ │api://project/ │show all attributes - /binary │ │attribute│list │ │ │package/binary │works for all commands below, │ │ │ │ │ │ │too │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│list │ │ │api://project/ │show specific attribute │ │ │ │ │ │package attribute │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │ │ │ │ │api://project/ │ │ │attribute│set │ │ │package attribute │set attribute to newval │ │ │ │ │ │newval │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│create│ │ │api://project/ │create new attribute │ │ │ │ │ │package attribute │ │ ├─────────┼──────┼───┼───┼───────────────────┼────────────────────────────────┤ │attribute│delete│ │ │api://project/ │delete attribute │ │ │ │ │ │package attribute │ │ └─────────┴──────┴───┴───┴───────────────────┴────────────────────────────────┘
request
┌───────┬─────────┬───┬───┬─────────────────┬─────────────────────────────────┐ │ cmd │ subcmd │prj│pkg│ params/opts │ note │ │ │ │wc │wc │ │ │ ├───────┴─────────┴───┴───┴─────────────────┴─────────────────────────────────┤ │request is not context sensitive │ ├───────┬─────────┬───┬───┬─────────────────┬─────────────────────────────────┤ │ │ │ │ │--submit api:// │ │ │request│create │ │ │project/package │ │ │ │ │ │ │api://tgt_projet/│ │ │ │ │ │ │<package> │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │ │ │ │ │--submit api:// │ │ │request│create │ │ │project/package │ │ │ │ │ │ │api://tgt_projet/│ │ │ │ │ │ │<package> │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │ │ │ │ │--changedevel │ │ │ │ │ │ │api://project/ │ │ │request│create │ │ │package api:// │ │ │ │ │ │ │tgt_projet/ │ │ │ │ │ │ │<package> │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │ │ │ │ │--role role user │ │ │request│create │ │ │api://project/ │ │ │ │ │ │ │<package> │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │ │ │ │ │--grouprole role │ │ │request│create │ │ │group api:// │ │ │ │ │ │ │project/<package>│ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │ │ │ │ │--bugowner user │alternatively we treat bugowner │ │request│create │ │ │api://project/ │as a "role" and use --role │ │ │ │ │ │<package> │bugowner... │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│create │ │ │--delete api:// │ │ │ │ │ │ │project/<package>│ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│list │ │ │api://<project>/ │list all/project/package requests│ │ │ │ │ │<package> │ │ ├───────┴─────────┴───┴───┴─────────────────┴─────────────────────────────────┤ │in the following we support both: "api://id" and "id" (if the latter format │ │is specified the default apiurl is used - regardless if the cmd is executed │ │in a wc) │ ├───────┬─────────┬───┬───┬─────────────────┬─────────────────────────────────┤ │ │ │ │ │ │apart from --brief also support │ │request│show │ │ │api://id │--log which just shows the │ │ │ │ │ │ │statehistory + current state │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│supersede│ │ │api://id api:// │ │ │ │ │ │ │supersede_id │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│accept │ │ │api://id │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│decline │ │ │api://id │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│revoke │ │ │api://id │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│reopen │ │ │api://id │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │request│wipe │ │ │api://id │ │ ├───────┼─────────┼───┼───┼─────────────────┼─────────────────────────────────┤ │ │ │ │ │ │if the package's package belongs │ │ │ │ │ │ │to the wc's project the package │ │request│checkout │(x)│ │api://id │will be added to this project (if│ │ │ │ │ │ │it already exists an error will │ │ │ │ │ │ │be printed) │ └───────┴─────────┴───┴───┴─────────────────┴─────────────────────────────────┘
submitrequest
┌─────────────┬──────┬───┬───┬────────────────────┬───────────────────────────┐ │ cmd │subcmd│prj│pkg│ params/opts │ note │ │ │ │wc │wc │ │ │ ├─────────────┼──────┼───┼───┼────────────────────┼───────────────────────────┤ │ │ │ │ │ │semantic change: creates a │ │submitrequest│ │x │ │ │sr for all local packages │ │ │ │ │ │ │(instead of all remote) │ ├─────────────┼──────┼───┼───┼────────────────────┼───────────────────────────┤ │submitrequest│ │ │x │ │wc has to be a source link │ ├─────────────┼──────┼───┼───┼────────────────────┼───────────────────────────┤ │submitrequest│ │ │x │api://tgt_project/ │ │ │ │ │ │ │<tgt_package> │ │ ├─────────────┼──────┼───┼───┼────────────────────┼───────────────────────────┤ │ │ │ │ │api://project/ │ │ │submitrequest│ │ │ │package api:// │ │ │ │ │ │ │tgt_project/ │ │ │ │ │ │ │<tgt_package> │ │ └─────────────┴──────┴───┴───┴────────────────────┴───────────────────────────┘
review
┌──────┬─────────┬───┬───┬───────────────────────┬────────────────────────────┐ │ cmd │ subcmd │prj│pkg│ params/opts │ note │ │ │ │wc │wc │ │ │ ├──────┼─────────┼───┼───┼───────────────────────┼────────────────────────────┤ │review│accept │ │ │api://id │ │ ├──────┼─────────┼───┼───┼───────────────────────┼────────────────────────────┤ │review│decline │ │ │api://id │ │ ├──────┼─────────┼───┼───┼───────────────────────┼────────────────────────────┤ │review│reopen │ │ │api://id │ │ ├──────┼─────────┼───┼───┼───────────────────────┼────────────────────────────┤ │review│susersede│ │ │api://id api:// │ │ │ │ │ │ │supsersede_id │ │ ├──────┼─────────┼───┼───┼───────────────────────┼────────────────────────────┤ │ │ │ │ │api://id --user user │ │ │review│add │ │ │--group group --package│at least one option is │ │ │ │ │ │package --project │required │ │ │ │ │ │project │ │ ├──────┼─────────┼───┼───┼───────────────────────┼────────────────────────────┤ │ │ │ │ │ │just for convenience; │ │review│list │ │ │api://<project>/ │"request list --state │ │ │ │ │ │<package> │review" should lead to the │ │ │ │ │ │ │same result │ └──────┴─────────┴───┴───┴───────────────────────┴────────────────────────────┘
link
┌────┬──────┬─────┬─────┬────────────────────────────────────────────────┬────┐ │cmd │subcmd│ prj │ pkg │ params/opts │note│ │ │ │ wc │ wc │ │ │ ├────┼──────┼─────┼─────┼────────────────────────────────────────────────┼────┤ │link│ │ │ │api://link_project api://project │ │ ├────┼──────┼─────┼─────┼────────────────────────────────────────────────┼────┤ │link│ │ │ │api://link_project/link_package api://project/& │ │ │ │ │ │ │tl;package> │ │ └────┴──────┴─────┴─────┴────────────────────────────────────────────────┴────┘
copy
┌────┬──────┬────┬────┬─────────────────────────────────────────┬─────────────┐ │cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├────┼──────┼────┼────┼─────────────────────────────────────────┼─────────────┤ │copy│ │ │ │api://copy_project api://project │could be │ │ │ │ │ │ │supported │ ├────┼──────┼────┼────┼─────────────────────────────────────────┼─────────────┤ │copy│ │ │ │api://copy_project/copy_package api:// │ │ │ │ │ │ │project/&tl;package> │ │ └────┴──────┴────┴────┴─────────────────────────────────────────┴─────────────┘
maintenance
┌───────────┬──────────────┬────┬────┬────────────────────┬────────────────────┐ │ cmd │ subcmd │prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├───────────┼──────────────┼────┼────┼────────────────────┼────────────────────┤ │maintenance│releaserequest│x │ │ │ │ ├───────────┼──────────────┼────┼────┼────────────────────┼────────────────────┤ │maintenance│releaserequest│ │ │api://project │ │ ├───────────┼──────────────┼────┼────┼────────────────────┼────────────────────┤ │maintenance│createincident│ │ │<api://project> │ │ ├───────────┼──────────────┼────┼────┼────────────────────┼────────────────────┤ │maintenance│request │ │ │api://project <api:/│ │ │ │ │ │ │/tgt_project> │ │ ├───────────┼──────────────┼────┼────┼────────────────────┼────────────────────┤ │maintenance│branch │ │ │package │XXX: this voilates │ │ │ │ │ │<tgt_project> │the url schema │ └───────────┴──────────────┴────┴────┴────────────────────┴────────────────────┘
branch
┌──────┬──────┬─────┬─────┬──────────────────────────────────────────────┬────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │note│ │ │ │ wc │ wc │ │ │ ├──────┼──────┼─────┼─────┼──────────────────────────────────────────────┼────┤ │branch│ │ │ │api://project/package <api://tgt_project/ │ │ │ │ │ │ │tgt_package> │ │ └──────┴──────┴─────┴─────┴──────────────────────────────────────────────┴────┘
undelete
┌────────┬──────┬──────┬──────┬───────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├────────┼──────┼──────┼──────┼───────────────────────┼────┤ │undelete│ │ │ │api://project/<package>│ │ └────────┴──────┴──────┴──────┴───────────────────────┴────┘
delete
┌──────┬──────┬─────┬─────┬────────────────────┬──────────────────────────────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────┼──────┼─────┼─────┼────────────────────┼──────────────────────────────┤ │delete│ │ │ │api://project/ │multiple arguments can be │ │ │ │ │ │<package> │specified │ ├──────┼──────┼─────┼─────┼────────────────────┼──────────────────────────────┤ │delete│ │ │ │/path/to/package │ │ ├──────┼──────┼─────┼─────┼────────────────────┼──────────────────────────────┤ │delete│ │ │ │/path/to/file │ │ └──────┴──────┴─────┴─────┴────────────────────┴──────────────────────────────┘
diff
┌────┬──────┬────┬────┬──────────────────────────────────────┬─────────────────┐ │cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │x │ │ │ │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │ │x │ │ │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │ │ │/path/to/file │multiple args are│ │ │ │ │ │ │supported │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │ │ │/path/to/package │ │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │ │ │/path/to/project │ │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │ │ │api://project/package │ │ ├────┼──────┼────┼────┼──────────────────────────────────────┼─────────────────┤ │diff│ │ │ │api://project/package api:// │ │ │ │ │ │ │original_project/original_package │ │ └────┴──────┴────┴────┴──────────────────────────────────────┴─────────────────┘
checkout
┌────────┬──────┬────┬────┬─────────────────┬─────────────────────────────────┐ │ cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├────────┼──────┼────┼────┼─────────────────┼─────────────────────────────────┤ │checkout│ │ │ │api://project/ │checking out a file is not │ │ │ │ │ │<package> │supported anymore │ ├────────┼──────┼────┼────┼─────────────────┼─────────────────────────────────┤ │checkout│ │x │ │package │adds the package to the wc │ ├────────┼──────┼────┼────┼─────────────────┼─────────────────────────────────┤ │checkout│ │x │ │package │adds the package to the wc │ └────────┴──────┴────┴────┴─────────────────┴─────────────────────────────────┘
status
┌──────┬──────┬─────┬─────┬───────────────────────────┬────────────────────────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────────┼────────────────────────┤ │status│ │x │ │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────────┼────────────────────────┤ │status│ │ │x │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────────┼────────────────────────┤ │status│ │ │ │/path/to/ │multiple arguments are │ │ │ │ │ │project_or_package_or_file │supported │ └──────┴──────┴─────┴─────┴───────────────────────────┴────────────────────────┘
add
┌───┬──────┬──────┬──────┬────────────────────┬───────────────────────────────┐ │cmd│subcmd│prj wc│pkg wc│ params/opts │ note │ ├───┼──────┼──────┼──────┼────────────────────┼───────────────────────────────┤ │add│ │ │ │/path/to/dir_or_file│multiple arguments are │ │ │ │ │ │ │supported │ ├───┼──────┼──────┼──────┼────────────────────┼───────────────────────────────┤ │add│ │ │ │URL │create a _service file │ └───┴──────┴──────┴──────┴────────────────────┴───────────────────────────────┘
addremove
┌─────────┬──────┬──────┬──────┬───────────────┬──────────────────────────────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │ note │ ├─────────┼──────┼──────┼──────┼───────────────┼──────────────────────────────┤ │addremove│ │x │ │ │ │ ├─────────┼──────┼──────┼──────┼───────────────┼──────────────────────────────┤ │addremove│ │ │x │ │ │ ├─────────┼──────┼──────┼──────┼───────────────┼──────────────────────────────┤ │addremove│ │ │ │/path/to/ │multiple arguments are │ │ │ │ │ │package │supported │ └─────────┴──────┴──────┴──────┴───────────────┴──────────────────────────────┘
commit
┌──────┬──────┬─────┬─────┬───────────────────────────┬────────────────────────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────────┼────────────────────────┤ │commit│ │x │ │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────────┼────────────────────────┤ │commit│ │ │x │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────────┼────────────────────────┤ │commit│ │ │ │/path/to/ │multiple arguments are │ │ │ │ │ │project_or_package_or_file │supported │ └──────┴──────┴─────┴─────┴───────────────────────────┴────────────────────────┘
update
┌──────┬──────┬─────┬─────┬───────────────────────┬───────────────────────────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────┼───────────────────────────┤ │update│ │x │ │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────┼───────────────────────────┤ │update│ │ │x │ │ │ ├──────┼──────┼─────┼─────┼───────────────────────┼───────────────────────────┤ │update│ │ │ │/path/to/ │multiple arguments are │ │ │ │ │ │project_or_package │supported │ └──────┴──────┴─────┴─────┴───────────────────────┴───────────────────────────┘
resolved
┌────────┬──────┬──────┬──────┬─────────────┬────────────────────────────────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │ note │ ├────────┼──────┼──────┼──────┼─────────────┼────────────────────────────────┤ │resolved│ │ │ │/path/to/file│multiple arguments are supported│ └────────┴──────┴──────┴──────┴─────────────┴────────────────────────────────┘
distributions
┌─────────────┬──────┬──────┬──────┬───────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│params/opts│note│ ├─────────────┼──────┼──────┼──────┼───────────┼────┤ │distributions│ │ │ │api:// │ │ └─────────────┴──────┴──────┴──────┴───────────┴────┘
results
┌───────┬──────┬──────┬──────┬───────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├───────┼──────┼──────┼──────┼───────────────────────┼────┤ │results│ │x │ │ │ │ ├───────┼──────┼──────┼──────┼───────────────────────┼────┤ │results│ │ │x │ │ │ ├───────┼──────┼──────┼──────┼───────────────────────┼────┤ │results│ │ │ │api://project/<package>│ │ └───────┴──────┴──────┴──────┴───────────────────────┴────┘
buildlog if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌────────┬──────┬──────┬──────┬─────────────────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├────────┼──────┼──────┼──────┼─────────────────────────────────┼────┤ │buildlog│ │ │x │<repo/arch> │ │ ├────────┼──────┼──────┼──────┼─────────────────────────────────┼────┤ │buildlog│ │ │x │<repo/arch> --local │ │ ├────────┼──────┼──────┼──────┼─────────────────────────────────┼────┤ │buildlog│ │ │ │api://project/package <repo/arch>│ │ └────────┴──────┴──────┴──────┴─────────────────────────────────┴────┘
buildmeta if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌─────────┬─────────────┬───┬───┬───────────────┬─────────────────────────────┐ │ cmd │ subcmd │prj│pkg│ params/opts │ note │ │ │ │wc │wc │ │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │ │distingiush between repo/arch│ │buildmeta│info │ │x │<repo/arch> │build_descr, /arch │ │ │ │ │ │<build_descr> │build_descr via the file │ │ │ │ │ │ │extension of build_descr │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │api://project/ │distingiush between repo/arch│ │buildmeta│info │ │ │package <repo/ │build_descr, /arch │ │ │ │ │ │arch> │build_descr via the file │ │ │ │ │ │<build_descr> │extension of build_descr │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│config │ │x │<repo/arch> │ │ │ │ │ │ │<build_descr> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│config │ │ │api://project/ │ │ │ │ │ │ │package <repo> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│triggerreason│ │x │<repo/arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │api://project/ │ │ │buildmeta│triggerreason│ │ │package <repo/ │ │ │ │ │ │ │arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│dependson │ │x │<repo/arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │api://project/ │ │ │buildmeta│dependson │ │ │package <repo/ │ │ │ │ │ │ │arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│log │ │x │<repo/arch> │same as buildlog (just for │ │ │ │ │ │ │consistency) │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│log │ │x │<repo/arch> │same as buildlog (just for │ │ │ │ │ │--local │consistency) │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │api://project/ │same as buildlog (just for │ │buildmeta│log │ │ │package <repo/ │consistency) │ │ │ │ │ │arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│history │ │x │<repo/arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │api://project/ │ │ │buildmeta│history │ │ │package <repo/ │ │ │ │ │ │ │arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│jobhistory │ │x │<repo/arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │buildmeta│jobhistory │x │ │<repo/arch> │ │ ├─────────┼─────────────┼───┼───┼───────────────┼─────────────────────────────┤ │ │ │ │ │api://project/ │ │ │buildmeta│jobhistory │ │ │<package> <repo│ │ │ │ │ │ │/arch> │ │ └─────────┴─────────────┴───┴───┴───────────────┴─────────────────────────────┘
build if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌─────┬──────┬──────┬──────┬─────────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├─────┼──────┼──────┼──────┼─────────────────────────┼────┤ │build│ │ │x │<repo/arch> <build_descr>│ │ └─────┴──────┴──────┴──────┴─────────────────────────┴────┘
chroot if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌──────┬──────┬────┬────┬──────────────────┬──────────────────────────────────┐ │ cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────┼──────┼────┼────┼──────────────────┼──────────────────────────────────┤ │chroot│ │ │x │<repo/arch> │build_descr is not needed for the │ │ │ │ │ │<build_descr> │command itself │ └──────┴──────┴────┴────┴──────────────────┴──────────────────────────────────┘
log
┌───┬──────┬──────┬──────┬───────────────────────┬────┐ │cmd│subcmd│prj wc│pkg wc│ params/opts │note│ ├───┼──────┼──────┼──────┼───────────────────────┼────┤ │log│ │x │ │ │ │ ├───┼──────┼──────┼──────┼───────────────────────┼────┤ │log│ │ │x │ │ │ ├───┼──────┼──────┼──────┼───────────────────────┼────┤ │log│ │ │ │api://project/<package>│ │ └───┴──────┴──────┴──────┴───────────────────────┴────┘
service
┌───────┬───────────┬──────┬──────┬─────────────────────┬────┐ │ cmd │ subcmd │prj wc│pkg wc│ params/opts │note│ ├───────┼───────────┼──────┼──────┼─────────────────────┼────┤ │service│run │ │x │<service_name> │ │ ├───────┼───────────┼──────┼──────┼─────────────────────┼────┤ │service│disabledrun│ │x │ │ │ ├───────┼───────────┼──────┼──────┼─────────────────────┼────┤ │service│remoterun │ │ │api://project/package│ │ └───────┴───────────┴──────┴──────┴─────────────────────┴────┘
abortbuild if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌──────────┬──────┬────┬────┬────────────────────────┬────────────────────────┐ │ cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────────┼──────┼────┼────┼────────────────────────┼────────────────────────┤ │abortbuild│ │x │ │<repo/arch> │to abort all builds │ │ │ │ │ │ │specifiy --all │ ├──────────┼──────┼────┼────┼────────────────────────┼────────────────────────┤ │abortbuild│ │ │x │<repo/arch> │to abort all builds │ │ │ │ │ │ │specifiy --all │ ├──────────┼──────┼────┼────┼────────────────────────┼────────────────────────┤ │abortbuild│ │ │ │api://project/<package> │to abort all builds │ │ │ │ │ │<repo/arch> │specifiy --all │ └──────────┴──────┴────┴────┴────────────────────────┴────────────────────────┘
rebuild if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌───────┬──────┬────┬────┬────────────────────────┬───────────────────────────┐ │ cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├───────┼──────┼────┼────┼────────────────────────┼───────────────────────────┤ │rebuild│ │x │ │<repo/arch> │to rebuild all packages │ │ │ │ │ │ │specifiy --all │ ├───────┼──────┼────┼────┼────────────────────────┼───────────────────────────┤ │rebuild│ │ │x │<repo/arch> │to rebuild all packages │ │ │ │ │ │ │specifiy --all │ ├───────┼──────┼────┼────┼────────────────────────┼───────────────────────────┤ │rebuild│ │ │ │api://project/<package> │to rebuild all packages │ │ │ │ │ │<repo/arch> │specifiy --all │ └───────┴──────┴────┴────┴────────────────────────┴───────────────────────────┘
rebuild if repo/arch is not specified the config values will be used (default_repo, default_arch)
┌────────┬──────┬────┬────┬─────────────────────────┬─────────────────────────┐ │ cmd │subcmd│prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│get │x │ │<repo/arch> │to get all binaries │ │ │ │ │ │ │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│get │ │x │<repo/arch> │to get all binaries │ │ │ │ │ │ │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│get │ │ │api://project/<package> │to get all binaries │ │ │ │ │ │<repo/arch> │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│list │x │ │<repo/arch> │to list all binaries │ │ │ │ │ │ │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│list │ │x │<repo/arch> │to list all binaries │ │ │ │ │ │ │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│list │ │ │api://project/<package> │to list all binaries │ │ │ │ │ │<repo/arch> │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│wipe │x │ │<repo/arch> │to wipe all binaries │ │ │ │ │ │ │specifiy --all │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│search│ │ │api://<project> │ │ │ │ │ │ │search_term │ │ ├────────┼──────┼────┼────┼─────────────────────────┼─────────────────────────┤ │binaries│wipe │ │ │api://project/<package> │to wipe all binaries │ │ │ │ │ │<repo/arch> │specifiy --all │ └────────┴──────┴────┴────┴─────────────────────────┴─────────────────────────┘
my
┌───┬──────────────┬──────┬──────┬───────────┬────┐ │cmd│ subcmd │prj wc│pkg wc│params/opts│note│ ├───┼──────────────┼──────┼──────┼───────────┼────┤ │my │requests │ │ │ │ │ ├───┼──────────────┼──────┼──────┼───────────┼────┤ │my │submitrequests│ │ │ │ │ ├───┼──────────────┼──────┼──────┼───────────┼────┤ │my │projects │ │ │ │ │ ├───┼──────────────┼──────┼──────┼───────────┼────┤ │my │packages │ │ │ │ │ └───┴──────────────┴──────┴──────┴───────────┴────┘
search
┌──────┬──────┬──────┬──────┬───────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│params/opts│note│ ├──────┼──────┼──────┼──────┼───────────┼────┤ │search│ │ │ │search_term│ │ └──────┴──────┴──────┴──────┴───────────┴────┘
importsrcpkg
┌────────────┬──────┬──────┬──────┬─────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├────────────┼──────┼──────┼──────┼─────────────┼────┤ │importsrcpkg│ │x │ │/path/to/srpm│ │ └────────────┴──────┴──────┴──────┴─────────────┴────┘
person For groups we can add a new "group" command
┌──────┬──────────┬────┬────┬───────────────────────┬─────────────────────────┐ │ cmd │ subcmd │prj │pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├──────┼──────────┼────┼────┼───────────────────────┼─────────────────────────┤ │person│meta │ │ │api://username <--edit>│ │ ├──────┼──────────┼────┼────┼───────────────────────┼─────────────────────────┤ │person│maintainer│ │ │api://project/<package>│show maintainer of the │ │ │ │ │ │ │project/package │ ├──────┼──────────┼────┼────┼───────────────────────┼─────────────────────────┤ │person│maintainer│ │ │api://project/<package>│show maintainer of the │ │ │ │ │ │ │project/package │ ├──────┼──────────┼────┼────┼───────────────────────┼─────────────────────────┤ │person│add │ │ │api://project/<package>│ │ │ │ │ │ │user role │ │ ├──────┼──────────┼────┼────┼───────────────────────┼─────────────────────────┤ │person│delete │ │ │api://project/<package>│ │ │ │ │ │ │user <role> │ │ └──────┴──────────┴────┴────┴───────────────────────┴─────────────────────────┘
cat
┌───┬──────┬──────┬──────┬──────────────────────────┬────┐ │cmd│subcmd│prj wc│pkg wc│ params/opts │note│ ├───┼──────┼──────┼──────┼──────────────────────────┼────┤ │cat│ │ │ │api://project/package/file│ │ └───┴──────┴──────┴──────┴──────────────────────────┴────┘
less
┌───┬──────┬──────┬──────┬──────────────────────────┬────┐ │cmd│subcmd│prj wc│pkg wc│ params/opts │note│ ├───┼──────┼──────┼──────┼──────────────────────────┼────┤ │cat│ │ │ │api://project/package/file│ │ └───┴──────┴──────┴──────┴──────────────────────────┴────┘
repair
┌──────┬──────┬─────┬─────┬──────────────────────────────────────────────┬────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │note│ │ │ │ wc │ wc │ │ │ ├──────┼──────┼─────┼─────┼──────────────────────────────────────────────┼────┤ │repair│link │ │x │ │ │ ├──────┼──────┼─────┼─────┼──────────────────────────────────────────────┼────┤ │repair│link │ │ │api://project/package <api://into_project/ │ │ │ │ │ │ │<into_package>> │ │ ├──────┼──────┼─────┼─────┼──────────────────────────────────────────────┼────┤ │repair│wc │x │ │ │ │ ├──────┼──────┼─────┼─────┼──────────────────────────────────────────────┼────┤ │repair│wc │ │x │ │ │ └──────┴──────┴─────┴─────┴──────────────────────────────────────────────┴────┘
pull
┌────┬──────┬──────┬──────┬───────────┬────┐ │cmd │subcmd│prj wc│pkg wc│params/opts│note│ ├────┼──────┼──────┼──────┼───────────┼────┤ │pull│ │ │x │ │ │ └────┴──────┴──────┴──────┴───────────┴────┘
signkey
┌───────┬──────┬──────┬──────┬─────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├───────┼──────┼──────┼──────┼─────────────┼────┤ │signkey│ │ │ │api://project│ │ └───────┴──────┴──────┴──────┴─────────────┴────┘
vc
┌───┬──────┬──────┬──────┬───────────┬────┐ │cmd│subcmd│prj wc│pkg wc│params/opts│note│ ├───┼──────┼──────┼──────┼───────────┼────┤ │vc │ │ │ │ │ │ └───┴──────┴──────┴──────┴───────────┴────┘
mv
┌───┬──────┬─────┬─────┬──────────────────┬───────────────────────────────────┐ │cmd│subcmd│ prj │ pkg │ params/opts │ note │ │ │ │ wc │ wc │ │ │ ├───┼──────┼─────┼─────┼──────────────────┼───────────────────────────────────┤ │mv │ │ │x │filename │should we support this for │ │ │ │ │ │new_filename │packages, too? │ └───┴──────┴─────┴─────┴──────────────────┴───────────────────────────────────┘
config
┌──────┬──────┬──────┬──────┬────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├──────┼──────┼──────┼──────┼────────────────────┼────┤ │config│ │ │ │section option │ │ ├──────┼──────┼──────┼──────┼────────────────────┼────┤ │config│ │ │ │section option value│ │ └──────┴──────┴──────┴──────┴────────────────────┴────┘
revert
┌──────┬──────┬──────┬──────┬─────────────┬────────────────────────────────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │ note │ ├──────┼──────┼──────┼──────┼─────────────┼────────────────────────────────┤ │revert│ │ │x │ │ │ ├──────┼──────┼──────┼──────┼─────────────┼────────────────────────────────┤ │revert│ │ │ │/path/to/file│multiple arguments are supported│ └──────┴──────┴──────┴──────┴─────────────┴────────────────────────────────┘
api
┌───┬──────┬──────┬──────┬───────────────────────┬────┐ │cmd│subcmd│prj wc│pkg wc│ params/opts │note│ ├───┼──────┼──────┼──────┼───────────────────────┼────┤ │api│ │ │ │api://path/to/something│ │ └───┴──────┴──────┴──────┴───────────────────────┴────┘
aggregate
┌─────────┬──────┬─────┬─────┬───────────────────────────────────────────┬────┐ │ cmd │subcmd│ prj │ pkg │ params/opts │note│ │ │ │ wc │ wc │ │ │ ├─────────┼──────┼─────┼─────┼───────────────────────────────────────────┼────┤ │aggregate│ │ │ │api://project/package api://tgt_project/ │ │ │ │ │ │ │<tgt_packge> │ │ └─────────┴──────┴─────┴─────┴───────────────────────────────────────────┴────┘
mkpac
┌─────┬──────┬──────┬──────┬────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│params/opts │note│ ├─────┼──────┼──────┼──────┼────────────┼────┤ │mkpac│ │x │ │package_name│ │ └─────┴──────┴──────┴──────┴────────────┴────┘
setlinkrev
┌──────────┬──────┬──────┬──────┬───────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├──────────┼──────┼──────┼──────┼───────────────────────┼────┤ │setlinkrev│ │ │x │ │ │ ├──────────┼──────┼──────┼──────┼───────────────────────┼────┤ │setlinkrev│ │ │ │api://project/<package>│ │ └──────────┴──────┴──────┴──────┴───────────────────────┴────┘
linktobranch
┌────────────┬──────┬──────┬──────┬─────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├────────────┼──────┼──────┼──────┼─────────────────────┼────┤ │linktobranch│ │ │x │ │ │ ├────────────┼──────┼──────┼──────┼─────────────────────┼────┤ │linktobranch│ │ │ │api://project/package│ │ └────────────┴──────┴──────┴──────┴─────────────────────┴────┘
detachbranch
┌────────────┬──────┬──────┬──────┬─────────────────────┬────┐ │ cmd │subcmd│prj wc│pkg wc│ params/opts │note│ ├────────────┼──────┼──────┼──────┼─────────────────────┼────┤ │detachbranch│ │ │x │ │ │ ├────────────┼──────┼──────┼──────┼─────────────────────┼────┤ │detachbranch│ │ │ │api://project/package│ │ └────────────┴──────┴──────┴──────┴─────────────────────┴────┘
-- With best regards, Carsten Hoeger