aboutsummaryrefslogtreecommitdiffhomepage
path: root/notes/combined_slul_command.txt
blob: ffe6188dd89d0c515183b835fe6b4ac3a085000d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95


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