@fnndsc/brasa 0.56.2 → 0.56.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/berth/berth.d.ts +11 -0
- package/dist/builtins/berth/berth.js +53 -22
- package/dist/builtins/berth/berth.js.map +1 -1
- package/dist/builtins/berth/berthCube.d.ts +17 -2
- package/dist/builtins/berth/berthCube.js +22 -10
- package/dist/builtins/berth/berthCube.js.map +1 -1
- package/dist/builtins/debug.d.ts +24 -3
- package/dist/builtins/debug.js +66 -13
- package/dist/builtins/debug.js.map +1 -1
- package/dist/builtins/fs/acl.args.d.ts +5 -38
- package/dist/builtins/fs/acl.args.js +6 -72
- package/dist/builtins/fs/acl.args.js.map +1 -1
- package/dist/builtins/fs/acl.d.ts +100 -10
- package/dist/builtins/fs/acl.js +222 -68
- package/dist/builtins/fs/acl.js.map +1 -1
- package/dist/builtins/fs/cat.args.d.ts +14 -15
- package/dist/builtins/fs/cat.args.js +13 -40
- package/dist/builtins/fs/cat.args.js.map +1 -1
- package/dist/builtins/fs/cat.d.ts +40 -3
- package/dist/builtins/fs/cat.js +89 -10
- package/dist/builtins/fs/cat.js.map +1 -1
- package/dist/builtins/fs/cd.d.ts +24 -6
- package/dist/builtins/fs/cd.js +71 -18
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/configWrite.d.ts +24 -8
- package/dist/builtins/fs/configWrite.js +77 -36
- package/dist/builtins/fs/configWrite.js.map +1 -1
- package/dist/builtins/fs/cp.d.ts +39 -4
- package/dist/builtins/fs/cp.js +120 -55
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/download.d.ts +12 -1
- package/dist/builtins/fs/download.js +24 -4
- package/dist/builtins/fs/download.js.map +1 -1
- package/dist/builtins/fs/du.d.ts +59 -33
- package/dist/builtins/fs/du.js +111 -79
- package/dist/builtins/fs/du.js.map +1 -1
- package/dist/builtins/fs/edit.d.ts +19 -4
- package/dist/builtins/fs/edit.js +77 -16
- package/dist/builtins/fs/edit.js.map +1 -1
- package/dist/builtins/fs/find.d.ts +25 -0
- package/dist/builtins/fs/find.js +76 -5
- package/dist/builtins/fs/find.js.map +1 -1
- package/dist/builtins/fs/mkdir.d.ts +28 -18
- package/dist/builtins/fs/mkdir.js +95 -66
- package/dist/builtins/fs/mkdir.js.map +1 -1
- package/dist/builtins/fs/mv.d.ts +34 -4
- package/dist/builtins/fs/mv.js +129 -64
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/pull.args.d.ts +56 -17
- package/dist/builtins/fs/pull.args.js +16 -66
- package/dist/builtins/fs/pull.args.js.map +1 -1
- package/dist/builtins/fs/pull.d.ts +62 -0
- package/dist/builtins/fs/pull.js +86 -22
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/fs/pwd.d.ts +19 -5
- package/dist/builtins/fs/pwd.js +62 -8
- package/dist/builtins/fs/pwd.js.map +1 -1
- package/dist/builtins/fs/rm.d.ts +58 -21
- package/dist/builtins/fs/rm.js +99 -82
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/rmdir.d.ts +29 -11
- package/dist/builtins/fs/rmdir.js +87 -36
- package/dist/builtins/fs/rmdir.js.map +1 -1
- package/dist/builtins/fs/touch.d.ts +44 -9
- package/dist/builtins/fs/touch.js +91 -27
- package/dist/builtins/fs/touch.js.map +1 -1
- package/dist/builtins/fs/transferJobs.d.ts +64 -0
- package/dist/builtins/fs/transferJobs.js +98 -0
- package/dist/builtins/fs/transferJobs.js.map +1 -0
- package/dist/builtins/fs/tree.d.ts +36 -9
- package/dist/builtins/fs/tree.js +126 -36
- package/dist/builtins/fs/tree.js.map +1 -1
- package/dist/builtins/fs/upload.d.ts +35 -3
- package/dist/builtins/fs/upload.js +99 -14
- package/dist/builtins/fs/upload.js.map +1 -1
- package/dist/builtins/fs/xattr.args.d.ts +12 -33
- package/dist/builtins/fs/xattr.args.js +17 -95
- package/dist/builtins/fs/xattr.args.js.map +1 -1
- package/dist/builtins/fs/xattr.d.ts +98 -8
- package/dist/builtins/fs/xattr.js +163 -24
- package/dist/builtins/fs/xattr.js.map +1 -1
- package/dist/builtins/games/bytes.d.ts +201 -5
- package/dist/builtins/games/bytes.js +255 -54
- package/dist/builtins/games/bytes.js.map +1 -1
- package/dist/builtins/games/chimes.d.ts +180 -3
- package/dist/builtins/games/chimes.js +203 -26
- package/dist/builtins/games/chimes.js.map +1 -1
- package/dist/builtins/games/chrislab.d.ts +101 -3
- package/dist/builtins/games/chrislab.js +117 -17
- package/dist/builtins/games/chrislab.js.map +1 -1
- package/dist/builtins/games/cowsay.d.ts +93 -2
- package/dist/builtins/games/cowsay.js +90 -31
- package/dist/builtins/games/cowsay.js.map +1 -1
- package/dist/builtins/games/figlet.d.ts +70 -2
- package/dist/builtins/games/figlet.js +83 -6
- package/dist/builtins/games/figlet.js.map +1 -1
- package/dist/builtins/games/lab.d.ts +104 -5
- package/dist/builtins/games/lab.js +144 -6
- package/dist/builtins/games/lab.js.map +1 -1
- package/dist/builtins/games/lolcat.d.ts +61 -1
- package/dist/builtins/games/lolcat.js +59 -24
- package/dist/builtins/games/lolcat.js.map +1 -1
- package/dist/builtins/games/morse.d.ts +36 -1
- package/dist/builtins/games/morse.js +50 -2
- package/dist/builtins/games/morse.js.map +1 -1
- package/dist/builtins/games/numbers.d.ts +241 -5
- package/dist/builtins/games/numbers.js +298 -23
- package/dist/builtins/games/numbers.js.map +1 -1
- package/dist/builtins/games/play.d.ts +96 -6
- package/dist/builtins/games/play.js +137 -6
- package/dist/builtins/games/play.js.map +1 -1
- package/dist/builtins/games/qr.d.ts +40 -1
- package/dist/builtins/games/qr.js +51 -2
- package/dist/builtins/games/qr.js.map +1 -1
- package/dist/builtins/games/show.d.ts +131 -6
- package/dist/builtins/games/show.js +208 -20
- package/dist/builtins/games/show.js.map +1 -1
- package/dist/builtins/games/sky.d.ts +178 -4
- package/dist/builtins/games/sky.js +228 -12
- package/dist/builtins/games/sky.js.map +1 -1
- package/dist/builtins/games/text.d.ts +258 -7
- package/dist/builtins/games/text.js +310 -29
- package/dist/builtins/games/text.js.map +1 -1
- package/dist/builtins/games/trek.d.ts +67 -3
- package/dist/builtins/games/trek.js +63 -10
- package/dist/builtins/games/trek.js.map +1 -1
- package/dist/builtins/games/wtf.d.ts +58 -1
- package/dist/builtins/games/wtf.js +67 -6
- package/dist/builtins/games/wtf.js.map +1 -1
- package/dist/builtins/help.d.ts +38 -2
- package/dist/builtins/help.js +76 -769
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/helpSections.js +4 -1
- package/dist/builtins/helpSections.js.map +1 -1
- package/dist/builtins/net/connect.d.ts +36 -3
- package/dist/builtins/net/connect.js +84 -26
- package/dist/builtins/net/connect.js.map +1 -1
- package/dist/builtins/net/cubepath.d.ts +49 -5
- package/dist/builtins/net/cubepath.js +69 -27
- package/dist/builtins/net/cubepath.js.map +1 -1
- package/dist/builtins/net/logout.d.ts +13 -4
- package/dist/builtins/net/logout.js +49 -3
- package/dist/builtins/net/logout.js.map +1 -1
- package/dist/builtins/net/netstat.d.ts +29 -4
- package/dist/builtins/net/netstat.js +64 -23
- package/dist/builtins/net/netstat.js.map +1 -1
- package/dist/builtins/net/pacs.d.ts +169 -15
- package/dist/builtins/net/pacs.js +92 -33
- package/dist/builtins/net/pacs.js.map +1 -1
- package/dist/builtins/net/query.args.d.ts +95 -0
- package/dist/builtins/net/query.args.js +26 -0
- package/dist/builtins/net/query.args.js.map +1 -0
- package/dist/builtins/net/query.d.ts +98 -5
- package/dist/builtins/net/query.js +89 -83
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/net/status.d.ts +5 -3
- package/dist/builtins/net/status.js +5 -12
- package/dist/builtins/net/status.js.map +1 -1
- package/dist/builtins/parametersofplugin.d.ts +82 -3
- package/dist/builtins/parametersofplugin.js +79 -23
- package/dist/builtins/parametersofplugin.js.map +1 -1
- package/dist/builtins/proc.d.ts +210 -3
- package/dist/builtins/proc.js +210 -119
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/compute.d.ts +67 -3
- package/dist/builtins/res/compute.js +121 -35
- package/dist/builtins/res/compute.js.map +1 -1
- package/dist/builtins/res/dicom.d.ts +52 -3
- package/dist/builtins/res/dicom.js +82 -34
- package/dist/builtins/res/dicom.js.map +1 -1
- package/dist/builtins/res/expect.d.ts +52 -3
- package/dist/builtins/res/expect.js +92 -29
- package/dist/builtins/res/expect.js.map +1 -1
- package/dist/builtins/res/feed.d.ts +475 -3
- package/dist/builtins/res/feed.js +253 -158
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/files.d.ts +517 -3
- package/dist/builtins/res/files.js +124 -44
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/gather.d.ts +113 -3
- package/dist/builtins/res/gather.js +153 -44
- package/dist/builtins/res/gather.js.map +1 -1
- package/dist/builtins/res/gather.process.d.ts +27 -19
- package/dist/builtins/res/gather.process.js +29 -59
- package/dist/builtins/res/gather.process.js.map +1 -1
- package/dist/builtins/res/group.d.ts +284 -3
- package/dist/builtins/res/group.js +147 -76
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/image.d.ts +30 -2
- package/dist/builtins/res/image.js +62 -10
- package/dist/builtins/res/image.js.map +1 -1
- package/dist/builtins/res/play.d.ts +71 -9
- package/dist/builtins/res/play.js +124 -82
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/builtins/res/plugininstance.d.ts +307 -2
- package/dist/builtins/res/plugininstance.js +122 -50
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.d.ts +244 -2
- package/dist/builtins/res/pluginmeta.js +98 -40
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/record.d.ts +37 -3
- package/dist/builtins/res/record.js +127 -57
- package/dist/builtins/res/record.js.map +1 -1
- package/dist/builtins/res/resourceList.d.ts +136 -0
- package/dist/builtins/res/resourceList.js +51 -0
- package/dist/builtins/res/resourceList.js.map +1 -0
- package/dist/builtins/res/tag.d.ts +244 -3
- package/dist/builtins/res/tag.js +97 -41
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/user.d.ts +122 -3
- package/dist/builtins/res/user.js +83 -21
- package/dist/builtins/res/user.js.map +1 -1
- package/dist/builtins/res/workflow.d.ts +244 -2
- package/dist/builtins/res/workflow.js +97 -40
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/store.d.ts +85 -3
- package/dist/builtins/store.js +135 -68
- package/dist/builtins/store.js.map +1 -1
- package/dist/builtins/sys/apropos.d.ts +80 -5
- package/dist/builtins/sys/apropos.js +121 -15
- package/dist/builtins/sys/apropos.js.map +1 -1
- package/dist/builtins/sys/cal.d.ts +44 -5
- package/dist/builtins/sys/cal.js +57 -10
- package/dist/builtins/sys/cal.js.map +1 -1
- package/dist/builtins/sys/command.d.ts +20 -0
- package/dist/builtins/sys/command.js +31 -0
- package/dist/builtins/sys/command.js.map +1 -1
- package/dist/builtins/sys/context.d.ts +13 -3
- package/dist/builtins/sys/context.js +51 -4
- package/dist/builtins/sys/context.js.map +1 -1
- package/dist/builtins/sys/date.d.ts +56 -5
- package/dist/builtins/sys/date.js +63 -9
- package/dist/builtins/sys/date.js.map +1 -1
- package/dist/builtins/sys/echo.d.ts +63 -2
- package/dist/builtins/sys/echo.js +87 -8
- package/dist/builtins/sys/echo.js.map +1 -1
- package/dist/builtins/sys/fortune.d.ts +27 -2
- package/dist/builtins/sys/fortune.js +44 -2
- package/dist/builtins/sys/fortune.js.map +1 -1
- package/dist/builtins/sys/grep.d.ts +245 -11
- package/dist/builtins/sys/grep.js +418 -131
- package/dist/builtins/sys/grep.js.map +1 -1
- package/dist/builtins/sys/joblets.d.ts +66 -7
- package/dist/builtins/sys/joblets.js +101 -14
- package/dist/builtins/sys/joblets.js.map +1 -1
- package/dist/builtins/sys/motd.d.ts +37 -3
- package/dist/builtins/sys/motd.js +49 -8
- package/dist/builtins/sys/motd.js.map +1 -1
- package/dist/builtins/sys/notes.d.ts +75 -3
- package/dist/builtins/sys/notes.js +90 -29
- package/dist/builtins/sys/notes.js.map +1 -1
- package/dist/builtins/sys/physicalmode.d.ts +24 -3
- package/dist/builtins/sys/physicalmode.js +68 -14
- package/dist/builtins/sys/physicalmode.js.map +1 -1
- package/dist/builtins/sys/tasks.d.ts +74 -5
- package/dist/builtins/sys/tasks.js +102 -14
- package/dist/builtins/sys/tasks.js.map +1 -1
- package/dist/builtins/sys/textFilters.d.ts +673 -41
- package/dist/builtins/sys/textFilters.js +718 -263
- package/dist/builtins/sys/textFilters.js.map +1 -1
- package/dist/builtins/sys/timing.d.ts +24 -3
- package/dist/builtins/sys/timing.js +67 -14
- package/dist/builtins/sys/timing.js.map +1 -1
- package/dist/builtins/sys/variables.d.ts +70 -4
- package/dist/builtins/sys/variables.js +103 -31
- package/dist/builtins/sys/variables.js.map +1 -1
- package/dist/builtins/sys/version.d.ts +27 -2
- package/dist/builtins/sys/version.js +48 -3
- package/dist/builtins/sys/version.js.map +1 -1
- package/dist/builtins/sys/weather.d.ts +92 -15
- package/dist/builtins/sys/weather.js +71 -45
- package/dist/builtins/sys/weather.js.map +1 -1
- package/dist/builtins/sys/whoami.d.ts +38 -18
- package/dist/builtins/sys/whoami.js +112 -8
- package/dist/builtins/sys/whoami.js.map +1 -1
- package/dist/builtins/utils.d.ts +0 -37
- package/dist/builtins/utils.js +0 -86
- package/dist/builtins/utils.js.map +1 -1
- package/dist/chris/chrisCommands.js +58 -152
- package/dist/chris/chrisCommands.js.map +1 -1
- package/dist/chris/commandFallback.d.ts +12 -0
- package/dist/chris/commandFallback.js +47 -0
- package/dist/chris/commandFallback.js.map +1 -1
- package/dist/chris/filesystem.js +7 -5
- package/dist/chris/filesystem.js.map +1 -1
- package/dist/chris/help.js +0 -1018
- package/dist/chris/help.js.map +1 -1
- package/dist/chris/kinds.d.ts +21 -0
- package/dist/chris/kinds.js +114 -2
- package/dist/chris/kinds.js.map +1 -1
- package/dist/chris/mounts.d.ts +4 -4
- package/dist/chris/mounts.js +9 -16
- package/dist/chris/mounts.js.map +1 -1
- package/dist/chris/navigation.d.ts +2 -3
- package/dist/chris/navigation.js +6 -20
- package/dist/chris/navigation.js.map +1 -1
- package/dist/chris/pacsResources.d.ts +259 -0
- package/dist/chris/pacsResources.js +168 -0
- package/dist/chris/pacsResources.js.map +1 -0
- package/dist/core/commandDeclaration.d.ts +97 -7
- package/dist/core/commandDeclaration.js +21 -0
- package/dist/core/commandDeclaration.js.map +1 -1
- package/dist/core/commandParse.js +65 -17
- package/dist/core/commandParse.js.map +1 -1
- package/dist/core/commandRegistry.d.ts +4 -3
- package/dist/core/commandRegistry.js +36 -8
- package/dist/core/commandRegistry.js.map +1 -1
- package/dist/core/commandSchema.js +5 -2
- package/dist/core/commandSchema.js.map +1 -1
- package/dist/core/commandUsage.d.ts +15 -0
- package/dist/core/commandUsage.js +59 -7
- package/dist/core/commandUsage.js.map +1 -1
- package/dist/core/coreCommands.js +63 -212
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/paths.d.ts +29 -1
- package/dist/core/paths.js +15 -2
- package/dist/core/paths.js.map +1 -1
- package/dist/core/preprocess.d.ts +3 -4
- package/dist/core/preprocess.js +4 -5
- package/dist/core/preprocess.js.map +1 -1
- package/dist/lib/completer/declared.js +7 -4
- package/dist/lib/completer/declared.js.map +1 -1
- package/dist/lib/completer/index.js +2 -7
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/parser.d.ts +0 -8
- package/dist/lib/parser.js +0 -11
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +2 -1
- package/dist/lib/vfs/vfs.js +5 -4
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/dist/notes.json +1 -1
- package/package.json +5 -5
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
* @file CUBE-local account administration builtin.
|
|
3
3
|
*
|
|
4
4
|
* This is a targeted control-plane command rather than a ChRIS Resource
|
|
5
|
-
* Command: federated identities remain outside its authority.
|
|
5
|
+
* Command: federated identities remain outside its authority. Declared in one
|
|
6
|
+
* record (`userCommand`), answered as `user` and `users`.
|
|
7
|
+
*
|
|
8
|
+
* Key components:
|
|
9
|
+
* - userCommand: the declaration.
|
|
10
|
+
* - builtin_user: the declaration run over words already split.
|
|
11
|
+
* - user_run: one account operation, typed.
|
|
12
|
+
*
|
|
13
|
+
* Typical usage:
|
|
14
|
+
* ```ts
|
|
15
|
+
* await builtin_user(['inspect', 'jack.bivowac']);
|
|
16
|
+
* await user_run('inspect', 'jack.bivowac');
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Dependencies: chili's local-account seam; the active surface for the
|
|
20
|
+
* hidden password prompt.
|
|
6
21
|
*
|
|
7
22
|
* @module
|
|
8
23
|
*/
|
|
@@ -14,6 +29,8 @@ import { authorizationFailure_is, sudoHint_build } from '../../core/elevation.js
|
|
|
14
29
|
import { errorStack } from '@fnndsc/fond';
|
|
15
30
|
import { envelope_error, envelope_ok } from '@fnndsc/menu';
|
|
16
31
|
import { exitCode_set } from '../../core/handlerRun.js';
|
|
32
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
33
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
17
34
|
/**
|
|
18
35
|
* Renders a local-account command error and records a failing process status.
|
|
19
36
|
*
|
|
@@ -45,21 +62,69 @@ function user_operationError(verb, username) {
|
|
|
45
62
|
function user_render(account) {
|
|
46
63
|
return envelope_ok(table_render([{ ...account }], ['id', 'username', 'email', 'is_active', 'disabled_at', 'removed_at']));
|
|
47
64
|
}
|
|
65
|
+
/** The account a subcommand acts on. */
|
|
66
|
+
const USERNAME_OPERAND = { name: 'username', kind: 'word', summary: 'The CUBE-local account' };
|
|
67
|
+
/** What a `user` line may hold: one operation on one account. */
|
|
68
|
+
const USER_GRAMMAR = {
|
|
69
|
+
subcommands: {
|
|
70
|
+
add: { summary: 'Make a local account: prompts for its email, then a hidden password twice', operands: [USERNAME_OPERAND] },
|
|
71
|
+
inspect: { summary: 'Show a local account', operands: [USERNAME_OPERAND] },
|
|
72
|
+
disable: { summary: 'Disable a local account', operands: [USERNAME_OPERAND] },
|
|
73
|
+
enable: { summary: 'Enable a disabled local account', operands: [USERNAME_OPERAND] },
|
|
74
|
+
remove: { summary: 'Remove a local account', operands: [USERNAME_OPERAND] },
|
|
75
|
+
},
|
|
76
|
+
};
|
|
48
77
|
/**
|
|
49
|
-
*
|
|
78
|
+
* `user <add|inspect|disable|enable|remove> <username>`: the declaration.
|
|
50
79
|
*
|
|
51
|
-
* @
|
|
52
|
-
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* commands_register({ declarations: [userCommand] }, 'backend');
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export const userCommand = command_declare({
|
|
86
|
+
name: 'user',
|
|
87
|
+
aliases: ['users'],
|
|
88
|
+
grammar: USER_GRAMMAR,
|
|
89
|
+
help: {
|
|
90
|
+
summary: 'Manage CUBE-local accounts; federated identities remain externally managed',
|
|
91
|
+
description: 'Manage CUBE-local accounts; federated identities remain externally managed. Use `sudo user …` for lifecycle operations; add prompts for the email and a hidden password, with a confirmation.',
|
|
92
|
+
category: 'Admin',
|
|
93
|
+
examples: ['sudo user add jack.bivowac', 'sudo user disable jack.bivowac', 'sudo user remove jack.bivowac'],
|
|
94
|
+
},
|
|
95
|
+
handler: async (args) => user_run(args.subcommand, args.operands.username),
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* `user` over words already split: the declaration's parse and handler.
|
|
99
|
+
*
|
|
100
|
+
* @param args - The words after `user`.
|
|
101
|
+
* @returns The account operation's result, or the refusal of a bad line.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* await builtin_user(['disable', 'jack.bivowac']);
|
|
106
|
+
* ```
|
|
53
107
|
*/
|
|
54
108
|
export async function builtin_user(args) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
109
|
+
return declaredCommand_run(userCommand, args);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Performs one local-account lifecycle operation, after making sure the
|
|
113
|
+
* identity may administer accounts.
|
|
114
|
+
*
|
|
115
|
+
* @param verb - The operation.
|
|
116
|
+
* @param username - The local account it acts on.
|
|
117
|
+
* @returns Envelope containing a local-account result or operation error.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* await user_run('inspect', 'jack.bivowac');
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export async function user_run(verb, username) {
|
|
125
|
+
const access = await localAccount_adminAccessEnsure();
|
|
126
|
+
if (!access.ok)
|
|
127
|
+
return user_operationError(verb, username);
|
|
63
128
|
if (verb === 'add') {
|
|
64
129
|
const surface = surface_get();
|
|
65
130
|
if (!surface.capabilities.hiddenInput)
|
|
@@ -76,14 +141,11 @@ export async function builtin_user(args) {
|
|
|
76
141
|
const result = await localAccount_find(username);
|
|
77
142
|
return result.ok ? user_render(result.value) : user_error(errorStack.stack_pop()?.message ?? `No CUBE-local account named '${username}'.`);
|
|
78
143
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return result.ok ? user_render(result.value) : user_operationError(verb, username);
|
|
86
|
-
}
|
|
87
|
-
return user_error('Usage: user <add|inspect|disable|enable|remove> ...');
|
|
144
|
+
const found = await localAccount_find(username);
|
|
145
|
+
if (!found.ok)
|
|
146
|
+
return user_error(errorStack.stack_pop()?.message ?? `No CUBE-local account named '${username}'.`);
|
|
147
|
+
const action = verb;
|
|
148
|
+
const result = await localAccount_action(found.value.id, action);
|
|
149
|
+
return result.ok ? user_render(result.value) : user_operationError(verb, username);
|
|
88
150
|
}
|
|
89
151
|
//# sourceMappingURL=user.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/builtins/res/user.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/builtins/res/user.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,249 @@
|
|
|
1
1
|
import { CommandEnvelope } from '@fnndsc/menu';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* `workflow [[listing options] | list [listing options] | search <term> [listing options] | inspect]`: the declaration.
|
|
4
4
|
*
|
|
5
|
-
* @
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* commands_register({ declarations: [workflowCommand] }, 'backend');
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare const workflowCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
11
|
+
readonly bare: {
|
|
12
|
+
readonly summary: "List the workflows, as list does";
|
|
13
|
+
readonly options: {
|
|
14
|
+
readonly all: {
|
|
15
|
+
readonly long: "all";
|
|
16
|
+
readonly summary: "Fetch every page";
|
|
17
|
+
};
|
|
18
|
+
readonly limit: {
|
|
19
|
+
readonly long: "limit";
|
|
20
|
+
readonly summary: "Page size (default 20)";
|
|
21
|
+
readonly value: {
|
|
22
|
+
readonly name: "n";
|
|
23
|
+
readonly kind: "int";
|
|
24
|
+
readonly min: 1;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
readonly offset: {
|
|
28
|
+
readonly long: "offset";
|
|
29
|
+
readonly summary: "Start this many rows in";
|
|
30
|
+
readonly value: {
|
|
31
|
+
readonly name: "n";
|
|
32
|
+
readonly kind: "int";
|
|
33
|
+
readonly min: 0;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
readonly page: {
|
|
37
|
+
readonly long: "page";
|
|
38
|
+
readonly summary: "Page size, when --limit is not given";
|
|
39
|
+
readonly value: {
|
|
40
|
+
readonly name: "n";
|
|
41
|
+
readonly kind: "int";
|
|
42
|
+
readonly min: 1;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
readonly fields: {
|
|
46
|
+
readonly long: "fields";
|
|
47
|
+
readonly summary: "The columns to show, comma-separated (inspect names them)";
|
|
48
|
+
readonly value: {
|
|
49
|
+
readonly name: "field,…";
|
|
50
|
+
readonly kind: "word";
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
readonly search: {
|
|
54
|
+
readonly long: "search";
|
|
55
|
+
readonly summary: "Filter by field:value, comma-separated (inspect names the fields)";
|
|
56
|
+
readonly value: {
|
|
57
|
+
readonly name: "field:value";
|
|
58
|
+
readonly kind: "word";
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
readonly sort: {
|
|
62
|
+
readonly long: "sort";
|
|
63
|
+
readonly summary: "Sort by a field";
|
|
64
|
+
readonly value: {
|
|
65
|
+
readonly name: "field";
|
|
66
|
+
readonly kind: "word";
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
readonly reverse: {
|
|
70
|
+
readonly long: "reverse";
|
|
71
|
+
readonly summary: "Reverse the sort";
|
|
72
|
+
};
|
|
73
|
+
readonly table: {
|
|
74
|
+
readonly long: "table";
|
|
75
|
+
readonly summary: "Tabular output";
|
|
76
|
+
};
|
|
77
|
+
readonly csv: {
|
|
78
|
+
readonly long: "csv";
|
|
79
|
+
readonly summary: "CSV output";
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
readonly subcommands: {
|
|
84
|
+
readonly list: {
|
|
85
|
+
readonly summary: "List the workflows, 20 to a page";
|
|
86
|
+
readonly options: {
|
|
87
|
+
readonly all: {
|
|
88
|
+
readonly long: "all";
|
|
89
|
+
readonly summary: "Fetch every page";
|
|
90
|
+
};
|
|
91
|
+
readonly limit: {
|
|
92
|
+
readonly long: "limit";
|
|
93
|
+
readonly summary: "Page size (default 20)";
|
|
94
|
+
readonly value: {
|
|
95
|
+
readonly name: "n";
|
|
96
|
+
readonly kind: "int";
|
|
97
|
+
readonly min: 1;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
readonly offset: {
|
|
101
|
+
readonly long: "offset";
|
|
102
|
+
readonly summary: "Start this many rows in";
|
|
103
|
+
readonly value: {
|
|
104
|
+
readonly name: "n";
|
|
105
|
+
readonly kind: "int";
|
|
106
|
+
readonly min: 0;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
readonly page: {
|
|
110
|
+
readonly long: "page";
|
|
111
|
+
readonly summary: "Page size, when --limit is not given";
|
|
112
|
+
readonly value: {
|
|
113
|
+
readonly name: "n";
|
|
114
|
+
readonly kind: "int";
|
|
115
|
+
readonly min: 1;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
readonly fields: {
|
|
119
|
+
readonly long: "fields";
|
|
120
|
+
readonly summary: "The columns to show, comma-separated (inspect names them)";
|
|
121
|
+
readonly value: {
|
|
122
|
+
readonly name: "field,…";
|
|
123
|
+
readonly kind: "word";
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
readonly search: {
|
|
127
|
+
readonly long: "search";
|
|
128
|
+
readonly summary: "Filter by field:value, comma-separated (inspect names the fields)";
|
|
129
|
+
readonly value: {
|
|
130
|
+
readonly name: "field:value";
|
|
131
|
+
readonly kind: "word";
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
readonly sort: {
|
|
135
|
+
readonly long: "sort";
|
|
136
|
+
readonly summary: "Sort by a field";
|
|
137
|
+
readonly value: {
|
|
138
|
+
readonly name: "field";
|
|
139
|
+
readonly kind: "word";
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
readonly reverse: {
|
|
143
|
+
readonly long: "reverse";
|
|
144
|
+
readonly summary: "Reverse the sort";
|
|
145
|
+
};
|
|
146
|
+
readonly table: {
|
|
147
|
+
readonly long: "table";
|
|
148
|
+
readonly summary: "Tabular output";
|
|
149
|
+
};
|
|
150
|
+
readonly csv: {
|
|
151
|
+
readonly long: "csv";
|
|
152
|
+
readonly summary: "CSV output";
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
readonly search: {
|
|
157
|
+
readonly summary: "List the workflows a filter matches (list --search <term>)";
|
|
158
|
+
readonly operands: readonly [{
|
|
159
|
+
readonly name: "term";
|
|
160
|
+
readonly kind: "word";
|
|
161
|
+
readonly summary: "The filter, field:value (inspect names the fields)";
|
|
162
|
+
}];
|
|
163
|
+
readonly options: {
|
|
164
|
+
readonly all: {
|
|
165
|
+
readonly long: "all";
|
|
166
|
+
readonly summary: "Fetch every page";
|
|
167
|
+
};
|
|
168
|
+
readonly limit: {
|
|
169
|
+
readonly long: "limit";
|
|
170
|
+
readonly summary: "Page size (default 20)";
|
|
171
|
+
readonly value: {
|
|
172
|
+
readonly name: "n";
|
|
173
|
+
readonly kind: "int";
|
|
174
|
+
readonly min: 1;
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
readonly offset: {
|
|
178
|
+
readonly long: "offset";
|
|
179
|
+
readonly summary: "Start this many rows in";
|
|
180
|
+
readonly value: {
|
|
181
|
+
readonly name: "n";
|
|
182
|
+
readonly kind: "int";
|
|
183
|
+
readonly min: 0;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
readonly page: {
|
|
187
|
+
readonly long: "page";
|
|
188
|
+
readonly summary: "Page size, when --limit is not given";
|
|
189
|
+
readonly value: {
|
|
190
|
+
readonly name: "n";
|
|
191
|
+
readonly kind: "int";
|
|
192
|
+
readonly min: 1;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
readonly fields: {
|
|
196
|
+
readonly long: "fields";
|
|
197
|
+
readonly summary: "The columns to show, comma-separated (inspect names them)";
|
|
198
|
+
readonly value: {
|
|
199
|
+
readonly name: "field,…";
|
|
200
|
+
readonly kind: "word";
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
readonly search: {
|
|
204
|
+
readonly long: "search";
|
|
205
|
+
readonly summary: "Filter by field:value, comma-separated (inspect names the fields)";
|
|
206
|
+
readonly value: {
|
|
207
|
+
readonly name: "field:value";
|
|
208
|
+
readonly kind: "word";
|
|
209
|
+
};
|
|
210
|
+
};
|
|
211
|
+
readonly sort: {
|
|
212
|
+
readonly long: "sort";
|
|
213
|
+
readonly summary: "Sort by a field";
|
|
214
|
+
readonly value: {
|
|
215
|
+
readonly name: "field";
|
|
216
|
+
readonly kind: "word";
|
|
217
|
+
};
|
|
218
|
+
};
|
|
219
|
+
readonly reverse: {
|
|
220
|
+
readonly long: "reverse";
|
|
221
|
+
readonly summary: "Reverse the sort";
|
|
222
|
+
};
|
|
223
|
+
readonly table: {
|
|
224
|
+
readonly long: "table";
|
|
225
|
+
readonly summary: "Tabular output";
|
|
226
|
+
};
|
|
227
|
+
readonly csv: {
|
|
228
|
+
readonly long: "csv";
|
|
229
|
+
readonly summary: "CSV output";
|
|
230
|
+
};
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
readonly inspect: {
|
|
234
|
+
readonly summary: "Name the fields a workflow has";
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
}>;
|
|
238
|
+
/**
|
|
239
|
+
* `workflow` over words already split: the declaration's parse and handler.
|
|
240
|
+
*
|
|
241
|
+
* @param args - The words after `workflow`.
|
|
242
|
+
* @returns The answer, or the refusal of a bad line.
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```ts
|
|
246
|
+
* await builtin_workflow(['list', '--all']);
|
|
247
|
+
* ```
|
|
6
248
|
*/
|
|
7
249
|
export declare function builtin_workflow(args: string[]): Promise<CommandEnvelope>;
|
|
@@ -1,58 +1,115 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
2
|
+
* @file `workflow` and `workflows`: CUBE's workflows, a pipeline's runs,
|
|
3
|
+
* listed, searched, and their fields named. A pipeline runs with `pipeline run`.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
5
|
+
* Declared in one record (`workflowCommand`, `workflows` among its aliases): the subcommands and the listing options every resource
|
|
6
|
+
* command reads.
|
|
7
|
+
*
|
|
8
|
+
* Key components:
|
|
9
|
+
* - workflowCommand: the declaration, answered as `workflow` and `workflows`.
|
|
10
|
+
* - builtin_workflow: the declaration run over words already split.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
6
13
|
*/
|
|
7
14
|
import chalk from 'chalk';
|
|
8
|
-
import { commandArgs_process, cliOptions_extract, resourceListOptions_refusal, resourceSearchTerm_refusal, resourceSearch_args } from '../utils.js';
|
|
9
15
|
import { workflows_fetchList } from '@fnndsc/chili/commands/workflows/list.js';
|
|
10
16
|
import { workflowFields_fetch } from '@fnndsc/chili/commands/workflows/fields.js';
|
|
11
17
|
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
12
18
|
import { envelope_ok, envelope_error } from '@fnndsc/menu';
|
|
13
19
|
import { exitCode_set } from '../../core/handlerRun.js';
|
|
20
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
21
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
22
|
+
import { RESOURCE_LIST_OPTIONS_GRAMMAR, resourceListBag_build } from './resourceList.js';
|
|
14
23
|
/**
|
|
15
|
-
*
|
|
24
|
+
* Lists the workflows a listing's options ask for.
|
|
16
25
|
*
|
|
17
|
-
* @param
|
|
26
|
+
* @param options - The bag chili's listing reads.
|
|
27
|
+
* @returns The table, or that there are none, or the error.
|
|
18
28
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (refusal !== null) {
|
|
25
|
-
exitCode_set(1);
|
|
26
|
-
return envelope_error('', undefined, `${chalk.red(refusal)}\n`);
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
const { workflows, selectedFields, totalCount } = await workflows_fetchList(cliOptions_extract(parsed));
|
|
30
|
-
if (workflows.length === 0) {
|
|
31
|
-
return envelope_ok(`${chalk.gray('No workflows found.')}\n`);
|
|
32
|
-
}
|
|
33
|
-
return envelope_ok(table_render(workflows, selectedFields, { title: { title: 'Workflows', justification: 'center' }, pagination: totalCount !== undefined ? { shown: workflows.length, total: totalCount } : undefined }));
|
|
34
|
-
}
|
|
35
|
-
catch (e) {
|
|
36
|
-
exitCode_set(1);
|
|
37
|
-
return envelope_error('', undefined, `${chalk.red(`workflow error: ${e instanceof Error ? e.message : String(e)}`)}\n`);
|
|
29
|
+
async function workflowList_render(options) {
|
|
30
|
+
try {
|
|
31
|
+
const { workflows, selectedFields, totalCount } = await workflows_fetchList(options);
|
|
32
|
+
if (workflows.length === 0) {
|
|
33
|
+
return envelope_ok(`${chalk.gray('No workflows found.')}\n`);
|
|
38
34
|
}
|
|
35
|
+
return envelope_ok(table_render(workflows, selectedFields, { title: { title: 'Workflows', justification: 'center' }, pagination: totalCount !== undefined ? { shown: workflows.length, total: totalCount } : undefined }));
|
|
39
36
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
exitCode_set(1);
|
|
44
|
-
return envelope_error('', undefined, `${chalk.red(refusal)}\n`);
|
|
45
|
-
}
|
|
46
|
-
return builtin_workflow(resourceSearch_args(parsed));
|
|
37
|
+
catch (e) {
|
|
38
|
+
exitCode_set(1);
|
|
39
|
+
return envelope_error('', undefined, `${chalk.red(`workflow error: ${e instanceof Error ? e.message : String(e)}`)}\n`);
|
|
47
40
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Names the fields a workflow has.
|
|
44
|
+
*
|
|
45
|
+
* @returns The fields' table, or that there are none.
|
|
46
|
+
*/
|
|
47
|
+
async function workflowFields_render() {
|
|
48
|
+
const fields = await workflowFields_fetch();
|
|
49
|
+
if (fields && fields.length > 0) {
|
|
50
|
+
return envelope_ok(table_render(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Workflow fields', justification: 'center' } }));
|
|
54
51
|
}
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
return envelope_ok(`${chalk.gray('No fields found for workflows.')}\n`);
|
|
53
|
+
}
|
|
54
|
+
/** What a `workflow` line may hold. */
|
|
55
|
+
const WORKFLOW_GRAMMAR = {
|
|
56
|
+
bare: { summary: 'List the workflows, as list does', options: RESOURCE_LIST_OPTIONS_GRAMMAR },
|
|
57
|
+
subcommands: {
|
|
58
|
+
list: { summary: 'List the workflows, 20 to a page', options: RESOURCE_LIST_OPTIONS_GRAMMAR },
|
|
59
|
+
search: {
|
|
60
|
+
summary: 'List the workflows a filter matches (list --search <term>)',
|
|
61
|
+
operands: [{ name: 'term', kind: 'word', summary: 'The filter, field:value (inspect names the fields)' }],
|
|
62
|
+
options: RESOURCE_LIST_OPTIONS_GRAMMAR,
|
|
63
|
+
},
|
|
64
|
+
inspect: { summary: 'Name the fields a workflow has' },
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Runs one `workflow` line.
|
|
69
|
+
*
|
|
70
|
+
* @param args - The line, parsed.
|
|
71
|
+
* @returns The listing, the fields, or the error.
|
|
72
|
+
*/
|
|
73
|
+
async function workflow_run(args) {
|
|
74
|
+
switch (args.subcommand) {
|
|
75
|
+
case null:
|
|
76
|
+
case 'list': return workflowList_render(resourceListBag_build(args.options));
|
|
77
|
+
case 'search': return workflowList_render(resourceListBag_build(args.options, args.operands.term));
|
|
78
|
+
case 'inspect': return workflowFields_render();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `workflow [[listing options] | list [listing options] | search <term> [listing options] | inspect]`: the declaration.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* commands_register({ declarations: [workflowCommand] }, 'backend');
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export const workflowCommand = command_declare({
|
|
90
|
+
name: 'workflow',
|
|
91
|
+
aliases: ['workflows'],
|
|
92
|
+
grammar: WORKFLOW_GRAMMAR,
|
|
93
|
+
help: {
|
|
94
|
+
summary: "CUBE's workflows, a pipeline's runs: list them, search them, name their fields",
|
|
95
|
+
description: 'List the workflows in CUBE, each one run of a pipeline, a page at a time or every page, filtered by a field:value search and in the columns asked for; inspect names the fields a workflow has. workflow and workflows are one command. pipeline run starts one.',
|
|
96
|
+
category: 'Resources',
|
|
97
|
+
examples: ['workflows list', 'workflows list --all', 'workflows search pipeline_name:PHI_detection', 'workflows inspect'],
|
|
98
|
+
},
|
|
99
|
+
handler: workflow_run,
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* `workflow` over words already split: the declaration's parse and handler.
|
|
103
|
+
*
|
|
104
|
+
* @param args - The words after `workflow`.
|
|
105
|
+
* @returns The answer, or the refusal of a bad line.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* await builtin_workflow(['list', '--all']);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export async function builtin_workflow(args) {
|
|
113
|
+
return declaredCommand_run(workflowCommand, args);
|
|
57
114
|
}
|
|
58
115
|
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/builtins/res/workflow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/builtins/res/workflow.ts"],"names":[],"mappings":"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"}
|