@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,16 +2,42 @@
|
|
|
2
2
|
* @file `setfattr` and `getfattr` — a feed's tags.
|
|
3
3
|
*
|
|
4
4
|
* CUBE's freeform tags on a feed are, in POSIX terms, the values of one
|
|
5
|
-
* extended attribute, `tag`.
|
|
6
|
-
*
|
|
5
|
+
* extended attribute, `tag`. Each command is declared in one record: the
|
|
6
|
+
* attribute's name is one of the words it answers to, the feeds are path
|
|
7
|
+
* operands that glob. The capability lives in the kernel (`feedTags_list`,
|
|
8
|
+
* `feedTag_add`, `feedTag_remove`); this is its shell face.
|
|
9
|
+
*
|
|
10
|
+
* Key components:
|
|
11
|
+
* - setfattrCommand, getfattrCommand: the declarations.
|
|
12
|
+
* - builtin_setfattr, builtin_getfattr: each declaration run over words already split.
|
|
13
|
+
*
|
|
14
|
+
* Typical usage:
|
|
15
|
+
* ```ts
|
|
16
|
+
* await builtin_setfattr(['-n', 'tag', '-v', 'urgent', 'feed_12']);
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Dependencies: cumin's tag calls; the target and dump words (`xattr.args.ts`).
|
|
7
20
|
*
|
|
8
21
|
* @module
|
|
9
22
|
*/
|
|
23
|
+
import chalk from 'chalk';
|
|
10
24
|
import { feedTags_list, feedTag_add, feedTag_remove } from '@fnndsc/cumin';
|
|
11
|
-
import {
|
|
25
|
+
import { xattrTarget_resolve, xattr_render } from './xattr.args.js';
|
|
12
26
|
import { error_stripDebugPrefix } from '../utils.js';
|
|
13
27
|
import { errorStack } from '@fnndsc/fond';
|
|
14
28
|
import { envelope_ok, envelope_error } from '@fnndsc/menu';
|
|
29
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
30
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
31
|
+
import { commandUsage_render } from '../../core/commandUsage.js';
|
|
32
|
+
import { exitCode_set } from '../../core/handlerRun.js';
|
|
33
|
+
/** The feeds a line names, as both commands take them. */
|
|
34
|
+
const FEEDS_OPERAND = {
|
|
35
|
+
name: 'path',
|
|
36
|
+
kind: 'cfsPath',
|
|
37
|
+
repeat: true,
|
|
38
|
+
glob: true,
|
|
39
|
+
summary: 'The feeds: an id, feed_N, any path through /feeds/, or /proc/jobs/feed_N',
|
|
40
|
+
};
|
|
15
41
|
/**
|
|
16
42
|
* A refusal, on a line of its own.
|
|
17
43
|
*
|
|
@@ -31,19 +57,24 @@ function error_said(fallback) {
|
|
|
31
57
|
const error = errorStack.stack_pop();
|
|
32
58
|
return error?.message ?? fallback;
|
|
33
59
|
}
|
|
60
|
+
/** What a `getfattr` line may hold. */
|
|
61
|
+
const GETFATTR_GRAMMAR = {
|
|
62
|
+
operands: [FEEDS_OPERAND],
|
|
63
|
+
options: {
|
|
64
|
+
name: { short: 'n', long: 'name', summary: 'The attribute to read (only tag exists)', value: { name: 'name', kind: 'enum', values: ['tag', 'user.tag'] } },
|
|
65
|
+
dump: { short: 'd', long: 'dump', summary: 'Dump every attribute (the default)' },
|
|
66
|
+
},
|
|
67
|
+
};
|
|
34
68
|
/**
|
|
35
69
|
* Reads the tags a feed wears, in `getfattr`'s dump shape.
|
|
36
70
|
*
|
|
37
|
-
* @param args -
|
|
71
|
+
* @param args - The line, parsed.
|
|
38
72
|
* @returns An envelope carrying the rendered blocks and a model of them.
|
|
39
73
|
*/
|
|
40
|
-
|
|
41
|
-
const parsed = getfattrArgs_parse(args);
|
|
42
|
-
if (parsed.error !== null)
|
|
43
|
-
return refusal(parsed.error);
|
|
74
|
+
async function getfattr_run(args) {
|
|
44
75
|
const blocks = [];
|
|
45
76
|
const model = [];
|
|
46
|
-
for (const path of
|
|
77
|
+
for (const path of args.operands.path) {
|
|
47
78
|
const feedId = xattrTarget_resolve(path);
|
|
48
79
|
if (feedId === null)
|
|
49
80
|
return refusal(`getfattr: '${path}' does not name a feed`);
|
|
@@ -56,45 +87,153 @@ export async function builtin_getfattr(args) {
|
|
|
56
87
|
}
|
|
57
88
|
return envelope_ok(`${blocks.join('\n\n')}\n`, { kind: 'fs.xattr', data: model });
|
|
58
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* `getfattr [-d] [-n tag] <path>…`: the declaration.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* commands_register({ declarations: [getfattrCommand] }, 'backend');
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export const getfattrCommand = command_declare({
|
|
99
|
+
name: 'getfattr',
|
|
100
|
+
grammar: GETFATTR_GRAMMAR,
|
|
101
|
+
help: {
|
|
102
|
+
summary: 'Show the tags a feed wears',
|
|
103
|
+
description: 'Show a feed\'s tags in getfattr\'s dump shape: a # file: line, then one tag="…" line per tag.',
|
|
104
|
+
category: 'Sharing',
|
|
105
|
+
posix: { group: 'Files', differs: 'a feed\'s tags, as extended attributes' },
|
|
106
|
+
examples: [
|
|
107
|
+
'getfattr feed_12',
|
|
108
|
+
'getfattr -n tag /home/me/feeds/feed_12',
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
// Reading a feed's tags changes nothing of the session.
|
|
112
|
+
holds: [],
|
|
113
|
+
handler: getfattr_run,
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* `getfattr` over words already split: the declaration's parse and handler.
|
|
117
|
+
*
|
|
118
|
+
* @param args - The words after `getfattr`.
|
|
119
|
+
* @returns The tags, or the refusal of a bad line.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* await builtin_getfattr(['feed_12']);
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export async function builtin_getfattr(args) {
|
|
127
|
+
return declaredCommand_run(getfattrCommand, args);
|
|
128
|
+
}
|
|
129
|
+
/** What a `setfattr` line may hold. */
|
|
130
|
+
const SETFATTR_GRAMMAR = {
|
|
131
|
+
operands: [FEEDS_OPERAND],
|
|
132
|
+
options: {
|
|
133
|
+
name: { short: 'n', long: 'name', summary: 'The attribute to set (only tag exists)', value: { name: 'name', kind: 'enum', values: ['tag', 'user.tag'] } },
|
|
134
|
+
value: { short: 'v', long: 'value', summary: 'The tag', value: { name: 'value', kind: 'word' } },
|
|
135
|
+
remove: { short: 'x', long: 'remove', summary: 'Remove the tag given by -v, or every tag without -v', value: { name: 'name', kind: 'enum', values: ['tag', 'user.tag'] } },
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* A refusal of a line that says neither what to set nor what to remove, or
|
|
140
|
+
* a set without its value, with the usage.
|
|
141
|
+
*
|
|
142
|
+
* @param reason - What is missing.
|
|
143
|
+
* @returns The error envelope.
|
|
144
|
+
*/
|
|
145
|
+
function setfattrLine_refuse(reason) {
|
|
146
|
+
exitCode_set(1);
|
|
147
|
+
return envelope_error('', undefined, `${chalk.red(`setfattr: ${reason}; usage: ${commandUsage_render(setfattrCommand)}`)}\n`);
|
|
148
|
+
}
|
|
59
149
|
/**
|
|
60
150
|
* Hangs a tag on feeds (`-n tag -v <value>`), or takes one off (`-x tag -v
|
|
61
151
|
* <value>`), or takes every tag off (`-x tag`, as setfattr removes the
|
|
62
152
|
* whole attribute). Silent on success, as setfattr is; a refusal is named.
|
|
63
153
|
*
|
|
64
|
-
* @param args -
|
|
154
|
+
* @param args - The line, parsed.
|
|
65
155
|
* @returns An envelope, empty on success.
|
|
66
156
|
*/
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
return
|
|
157
|
+
async function setfattr_run(args) {
|
|
158
|
+
const { name, remove } = args.options;
|
|
159
|
+
if (name !== undefined && remove !== undefined)
|
|
160
|
+
return setfattrLine_refuse('-n sets and -x removes; give one');
|
|
161
|
+
if (name === undefined && remove === undefined)
|
|
162
|
+
return setfattrLine_refuse('-n tag or -x tag is needed');
|
|
163
|
+
const mode = name !== undefined ? 'set' : 'remove';
|
|
164
|
+
const value = args.options.value === undefined ? null : args.options.value.trim();
|
|
165
|
+
if (mode === 'set' && (value === null || value === ''))
|
|
166
|
+
return setfattrLine_refuse(`-n ${name ?? 'tag'} needs -v <value>`);
|
|
71
167
|
const changed = [];
|
|
72
|
-
for (const path of
|
|
168
|
+
for (const path of args.operands.path) {
|
|
73
169
|
const feedId = xattrTarget_resolve(path);
|
|
74
170
|
if (feedId === null)
|
|
75
171
|
return refusal(`setfattr: '${path}' does not name a feed`);
|
|
76
172
|
let names;
|
|
77
|
-
if (
|
|
173
|
+
if (mode === 'remove' && value === null) {
|
|
78
174
|
const held = await feedTags_list(feedId);
|
|
79
175
|
if (!held.ok)
|
|
80
176
|
return refusal(error_said(`setfattr: could not read the tags of feed ${feedId}`));
|
|
81
177
|
names = held.value.map((tag) => tag.name);
|
|
82
178
|
}
|
|
83
179
|
else {
|
|
84
|
-
names = [
|
|
180
|
+
names = [value ?? ''];
|
|
85
181
|
}
|
|
86
|
-
for (const
|
|
87
|
-
const done =
|
|
182
|
+
for (const tagName of names) {
|
|
183
|
+
const done = mode === 'set' ? await feedTag_add(feedId, tagName) : await feedTag_remove(feedId, tagName);
|
|
88
184
|
if (!done.ok) {
|
|
89
|
-
const said = error_stripDebugPrefix(error_said(`could not ${
|
|
185
|
+
const said = error_stripDebugPrefix(error_said(`could not ${mode === 'set' ? 'add' : 'remove'} tag ${tagName}`));
|
|
90
186
|
return refusal(`setfattr: ${path}: ${said}`);
|
|
91
187
|
}
|
|
92
|
-
if (
|
|
93
|
-
return refusal(`setfattr: ${path}: tag="${
|
|
188
|
+
if (mode === 'remove' && value !== null && !done.value) {
|
|
189
|
+
return refusal(`setfattr: ${path}: tag="${tagName}": No such attribute value`);
|
|
94
190
|
}
|
|
95
|
-
changed.push({ feedId, tag:
|
|
191
|
+
changed.push({ feedId, tag: tagName, done: done.value });
|
|
96
192
|
}
|
|
97
193
|
}
|
|
98
|
-
return envelope_ok('', { kind: 'fs.xattr.changed', data: { mode
|
|
194
|
+
return envelope_ok('', { kind: 'fs.xattr.changed', data: { mode, changed } });
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* `setfattr -n tag -v <value> <path>… | -x tag [-v <value>] <path>…`: the declaration.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* commands_register({ declarations: [setfattrCommand] }, 'backend');
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export const setfattrCommand = command_declare({
|
|
205
|
+
name: 'setfattr',
|
|
206
|
+
grammar: SETFATTR_GRAMMAR,
|
|
207
|
+
help: {
|
|
208
|
+
summary: 'Hang a tag on a feed, or take it off',
|
|
209
|
+
description: 'A feed\'s tags are the values of one extended attribute, tag (also user.tag): CUBE\'s '
|
|
210
|
+
+ 'freeform labels. -n tag -v <value> hangs one of your tags (a folder under /proc/tags: '
|
|
211
|
+
+ 'mkdir /proc/tags/<name> makes a tag, and naming one that does not exist is an error); '
|
|
212
|
+
+ '-x tag -v <value> takes it off; -x tag alone takes every tag off, as '
|
|
213
|
+
+ 'setfattr removes the whole attribute. A feed is named by id, by feed_N, by any path '
|
|
214
|
+
+ 'through /feeds/, or by its projection /proc/jobs/feed_N. Silent on success.',
|
|
215
|
+
category: 'Sharing',
|
|
216
|
+
posix: { group: 'Files', differs: 'tags on a feed, as extended attributes' },
|
|
217
|
+
examples: [
|
|
218
|
+
'setfattr -n tag -v urgent feed_12',
|
|
219
|
+
'setfattr -n tag -v review feed_12 feed_13',
|
|
220
|
+
'setfattr -x tag -v urgent /proc/jobs/feed_12',
|
|
221
|
+
],
|
|
222
|
+
},
|
|
223
|
+
handler: setfattr_run,
|
|
224
|
+
});
|
|
225
|
+
/**
|
|
226
|
+
* `setfattr` over words already split: the declaration's parse and handler.
|
|
227
|
+
*
|
|
228
|
+
* @param args - The words after `setfattr`.
|
|
229
|
+
* @returns An envelope, empty on success, or the refusal of a bad line.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```ts
|
|
233
|
+
* await builtin_setfattr(['-x', 'tag', 'feed_12']);
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
export async function builtin_setfattr(args) {
|
|
237
|
+
return declaredCommand_run(setfattrCommand, args);
|
|
99
238
|
}
|
|
100
239
|
//# sourceMappingURL=xattr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xattr.js","sourceRoot":"","sources":["../../../src/builtins/fs/xattr.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"xattr.js","sourceRoot":"","sources":["../../../src/builtins/fs/xattr.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,209 @@ export declare function magic_derive(bytes: Buffer, name?: string): string;
|
|
|
9
9
|
export declare function hexdump_render(bytes: Buffer, base?: number): string;
|
|
10
10
|
/** The printable runs of at least `min` characters in some bytes. */
|
|
11
11
|
export declare function strings_find(bytes: Buffer, min?: number): string[];
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* `file <path…>`: the declaration.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* commands_register({ declarations: [fileCommand] }, 'backend');
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const fileCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
21
|
+
readonly operands: readonly [{
|
|
22
|
+
readonly name: "path";
|
|
23
|
+
readonly kind: "cfsPath";
|
|
24
|
+
readonly repeat: true;
|
|
25
|
+
readonly glob: true;
|
|
26
|
+
readonly summary: "The ChRIS files to name; a wildcard matches paths";
|
|
27
|
+
}];
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* `file` over words already split: the declaration's parse and handler.
|
|
31
|
+
*
|
|
32
|
+
* @param args - The words after `file`.
|
|
33
|
+
* @returns What each file is, or the refusal of a bad line.
|
|
34
|
+
*/
|
|
13
35
|
export declare function builtin_file(args: string[]): Promise<CommandEnvelope>;
|
|
14
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* `xxd [-s OFFSET] [-l LENGTH] <path>`: the declaration.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* commands_register({ declarations: [xxdCommand] });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare const xxdCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
45
|
+
readonly operands: readonly [{
|
|
46
|
+
readonly name: "path";
|
|
47
|
+
readonly kind: "cfsPath";
|
|
48
|
+
readonly glob: true;
|
|
49
|
+
readonly summary: "The file";
|
|
50
|
+
}];
|
|
51
|
+
readonly options: {
|
|
52
|
+
readonly offset: {
|
|
53
|
+
readonly short: "s";
|
|
54
|
+
readonly summary: "Start at this byte (default 0)";
|
|
55
|
+
readonly value: {
|
|
56
|
+
readonly name: "OFFSET";
|
|
57
|
+
readonly kind: "int";
|
|
58
|
+
readonly min: 0;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
readonly length: {
|
|
62
|
+
readonly short: "l";
|
|
63
|
+
readonly summary: `Show this many bytes (default ${number})`;
|
|
64
|
+
readonly value: {
|
|
65
|
+
readonly name: "LENGTH";
|
|
66
|
+
readonly kind: "int";
|
|
67
|
+
readonly min: 0;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* `xxd` over words already split: the declaration's parse and handler.
|
|
74
|
+
*
|
|
75
|
+
* @param args - The words after `xxd`.
|
|
76
|
+
* @returns The dump, or the refusal of a bad line.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* await builtin_xxd(['-l', '16', 'a.txt']);
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
15
83
|
export declare function builtin_xxd(args: string[]): Promise<CommandEnvelope>;
|
|
16
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Dumps a file's bytes in hex.
|
|
86
|
+
*
|
|
87
|
+
* @param path - The CFS path.
|
|
88
|
+
* @param start - Where to start; absent for the beginning.
|
|
89
|
+
* @param span - How many bytes to show; absent for the default.
|
|
90
|
+
* @returns The dump and how much it showed, or why the file cannot be read.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* await xxd_run('a.txt', 0, 16);
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function xxd_run(path: string, start: number | undefined, span: number | undefined): Promise<CommandEnvelope>;
|
|
98
|
+
/**
|
|
99
|
+
* `strings [-n MIN] [-l LIMIT] <path>`: the declaration.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* commands_register({ declarations: [stringsCommand] });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare const stringsCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
107
|
+
readonly operands: readonly [{
|
|
108
|
+
readonly name: "path";
|
|
109
|
+
readonly kind: "cfsPath";
|
|
110
|
+
readonly glob: true;
|
|
111
|
+
readonly summary: "The file";
|
|
112
|
+
}];
|
|
113
|
+
readonly options: {
|
|
114
|
+
readonly min: {
|
|
115
|
+
readonly short: "n";
|
|
116
|
+
readonly summary: "Shortest run to show (default 4)";
|
|
117
|
+
readonly value: {
|
|
118
|
+
readonly name: "MIN";
|
|
119
|
+
readonly kind: "int";
|
|
120
|
+
readonly min: 0;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
readonly limit: {
|
|
124
|
+
readonly short: "l";
|
|
125
|
+
readonly summary: `Most runs to show (default ${number})`;
|
|
126
|
+
readonly value: {
|
|
127
|
+
readonly name: "LIMIT";
|
|
128
|
+
readonly kind: "int";
|
|
129
|
+
readonly min: 0;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
}>;
|
|
134
|
+
/**
|
|
135
|
+
* `strings` over words already split: the declaration's parse and handler.
|
|
136
|
+
*
|
|
137
|
+
* @param args - The words after `strings`.
|
|
138
|
+
* @returns The runs, or the refusal of a bad line.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* await builtin_strings(['-n', '8', 'a.bin']);
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
17
145
|
export declare function builtin_strings(args: string[]): Promise<CommandEnvelope>;
|
|
18
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* Lists the printable runs in a file.
|
|
148
|
+
*
|
|
149
|
+
* @param path - The CFS path.
|
|
150
|
+
* @param shortest - The shortest run to show; absent for 4.
|
|
151
|
+
* @param most - The most runs to show; absent for the default.
|
|
152
|
+
* @returns The runs and how many there were, or why the file cannot be read.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* await strings_run('a.bin', 8, 50);
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function strings_run(path: string, shortest: number | undefined, most: number | undefined): Promise<CommandEnvelope>;
|
|
160
|
+
/**
|
|
161
|
+
* `sha256sum <path>...`: the declaration.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* commands_register({ declarations: [sha256sumCommand] });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export declare const sha256sumCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
169
|
+
readonly operands: readonly [{
|
|
170
|
+
readonly name: "paths";
|
|
171
|
+
readonly kind: "cfsPath";
|
|
172
|
+
readonly glob: true;
|
|
173
|
+
readonly repeat: true;
|
|
174
|
+
readonly summary: "The files";
|
|
175
|
+
}];
|
|
176
|
+
}>;
|
|
177
|
+
/**
|
|
178
|
+
* `md5sum <path>...`: the declaration.
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts
|
|
182
|
+
* commands_register({ declarations: [md5sumCommand] });
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
export declare const md5sumCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
186
|
+
readonly operands: readonly [{
|
|
187
|
+
readonly name: "paths";
|
|
188
|
+
readonly kind: "cfsPath";
|
|
189
|
+
readonly glob: true;
|
|
190
|
+
readonly repeat: true;
|
|
191
|
+
readonly summary: "The files";
|
|
192
|
+
}];
|
|
193
|
+
}>;
|
|
194
|
+
/**
|
|
195
|
+
* `sha256sum` over words already split: the declaration's parse and handler.
|
|
196
|
+
*
|
|
197
|
+
* @param args - The words after `sha256sum`.
|
|
198
|
+
* @returns The digests, or the refusal of a bad line.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* await builtin_sha256sum(['a.txt']);
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
19
205
|
export declare function builtin_sha256sum(args: string[]): Promise<CommandEnvelope>;
|
|
20
|
-
/**
|
|
206
|
+
/**
|
|
207
|
+
* `md5sum` over words already split: the declaration's parse and handler.
|
|
208
|
+
*
|
|
209
|
+
* @param args - The words after `md5sum`.
|
|
210
|
+
* @returns The digests, or the refusal of a bad line.
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* await builtin_md5sum(['a.txt']);
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
21
217
|
export declare function builtin_md5sum(args: string[]): Promise<CommandEnvelope>;
|