Combined slul command: for invoking: * the compilation/build command * the package manager * the doc genarator (outputs: html, txt, man-page, etc.) Compilation: slul = slul build in current directory slul build = build module slul clean = remove outputs [maybe] slul install = (build if needed and) install current module * installation of data directories, manpages, license text, etc? * installation of .desktop files / start menu shortcuts? * installation of whatever is needed on MacOS? build and install .dmg file? * library / slul interface installation * call "make install" if there is a Makefile? slul test = run tests slul deps = install build- and runtime dependencies (impl+iface) slul build-deps = install build dependencies only Package manager: (disallow running as root, unless --system is given?) (have a --prefix option. it should work with add,remove,update,status,show) slul add = installs a package + iface dependencies + impl dependencies slul add --iface-only = installs a package interface + iface dependencies slul remove = removes a package slul upgrade = updates a package, or all if none is specified slul search = searches for a package slul status = shows installation status and version slul show = show package information + dependencies + status slul repo add PKG-PATTERN|all URL slul repo remove [PKG-PATTERN|all] URL (all removes *all* entries, not just the "all" entry) slul notarize = signed reproducible build/test upload: Uploads src&bin hashes + test result + compiler impl/version + backend&version + arch name + distro name/pkg-version (if customized) + signature of the contents above Package maintenance: slul pkgman init slul pkgman push slul pkgman reviewed slul pkgman api-reviewed Documentation generator slul doc Or separate commands -------------------- /usr/bin/slul -> symlink to /etc/alternatives/slul -> /usr/bin/cslul slul slul build slul clean [maybe] slul install slul test slul dep [calls slulpkg, but could have a --list option also] slul build-dep [calls slulpkg, but could have a --list option also] slul notarize [calls slulpkg, but could have a --no-upload option also] slulpkg add slulpkg remove slulpkg upgrade slulpkg search slulpkg status slulpkg show slulpkg log slulpkg repo add PKG-PATTERN|all URL slulpkg repo remove [PKG-PATTERN|all] URL slulpkg vidi push ENCODED-VIDI-STR slulpkg account register USERNAME EMAIL slulpkg account deregister slulpkg account edit slulpkg account add-key [+PERMISSION[=PACKAGE]] package permissions: push-package, push-review, add-owner, remove-push, config-package, push-vidi account permissions: deregister, edit, export-data permission management permissions: key-management deregister/edit/export-data/key-management must each be allowed in at least one key (which can be the same key) revoking a permission from ALL keys that have key-management requires a --force parameter slulpkg account export-data slulpkg manage push [has to be executed by M of N owners] slulpkg manage add-owner [has to be executed by M of N owners] slulpkg manage remove-owner [has to be executed by M of N owners, except to remove oneself] slulpkg manage m-of-n [has to be executed by M of N owners] slulpkg review start slulpkg review ack-file FILE [LINE_FROM-LINE_TO_INCLUSIVE] slulpkg review ack-api IDENTIFIER slulpkg review push sluldoc [or, build it in into cslul? could call the makefile if present] slul doc