@fnndsc/brasa 0.56.1 → 0.56.3
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 +90 -3
- package/dist/builtins/berth/berth.js +129 -76
- package/dist/builtins/berth/berth.js.map +1 -1
- package/dist/builtins/berth/berthClose.d.ts +25 -6
- package/dist/builtins/berth/berthClose.js +8 -64
- package/dist/builtins/berth/berthClose.js.map +1 -1
- package/dist/builtins/berth/berthCube.d.ts +3 -2
- package/dist/builtins/berth/berthCube.js +9 -16
- package/dist/builtins/berth/berthCube.js.map +1 -1
- package/dist/builtins/berth/berthProcesses.js +33 -3
- package/dist/builtins/berth/berthProcesses.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 +92 -13
- 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 +122 -56
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/download.d.ts +31 -4
- package/dist/builtins/fs/download.js +75 -38
- 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/ls.d.ts +69 -4
- package/dist/builtins/fs/ls.js +84 -45
- package/dist/builtins/fs/ls.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 +123 -31
- 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/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 +22 -3
- package/dist/builtins/fs/upload.js +82 -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 +41 -3
- package/dist/builtins/help.js +92 -796
- package/dist/builtins/help.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 +55 -7
- package/dist/builtins/res/dicom.js +86 -52
- 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 +719 -264
- 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 +1 -38
- package/dist/builtins/utils.js +1 -87
- package/dist/builtins/utils.js.map +1 -1
- package/dist/chris/backend.js +2 -0
- package/dist/chris/backend.js.map +1 -1
- package/dist/chris/chrisCommands.js +62 -159
- 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/files.js +24 -85
- package/dist/chris/files.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 -1082
- package/dist/chris/help.js.map +1 -1
- package/dist/chris/kinds.d.ts +30 -0
- package/dist/chris/kinds.js +154 -0
- package/dist/chris/kinds.js.map +1 -0
- 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/chris/promptContext.d.ts +6 -0
- package/dist/chris/promptContext.js +3 -1
- package/dist/chris/promptContext.js.map +1 -1
- package/dist/core/argumentKinds.d.ts +107 -0
- package/dist/core/argumentKinds.js +223 -0
- package/dist/core/argumentKinds.js.map +1 -0
- package/dist/core/backend.d.ts +4 -1
- package/dist/core/backend.js.map +1 -1
- package/dist/core/commandDeclaration.d.ts +453 -0
- package/dist/core/commandDeclaration.js +52 -0
- package/dist/core/commandDeclaration.js.map +1 -0
- package/dist/core/commandParse.d.ts +64 -0
- package/dist/core/commandParse.js +468 -0
- package/dist/core/commandParse.js.map +1 -0
- package/dist/core/commandRegistry.d.ts +37 -0
- package/dist/core/commandRegistry.js +100 -3
- package/dist/core/commandRegistry.js.map +1 -1
- package/dist/core/commandSchema.d.ts +32 -0
- package/dist/core/commandSchema.js +117 -0
- package/dist/core/commandSchema.js.map +1 -0
- package/dist/core/commandUsage.d.ts +62 -0
- package/dist/core/commandUsage.js +247 -0
- package/dist/core/commandUsage.js.map +1 -0
- package/dist/core/coreCommands.js +66 -214
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/dispatch.js +15 -8
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/paths.d.ts +51 -0
- package/dist/core/paths.js +86 -2
- package/dist/core/paths.js.map +1 -1
- package/dist/core/preprocess.d.ts +10 -9
- package/dist/core/preprocess.js +10 -20
- package/dist/core/preprocess.js.map +1 -1
- package/dist/core/warmupFailures.d.ts +34 -2
- package/dist/core/warmupFailures.js +43 -2
- package/dist/core/warmupFailures.js.map +1 -1
- package/dist/lib/completer/cfsPaths.d.ts +14 -0
- package/dist/lib/completer/cfsPaths.js +91 -0
- package/dist/lib/completer/cfsPaths.js.map +1 -0
- package/dist/lib/completer/declared.d.ts +15 -0
- package/dist/lib/completer/declared.js +189 -0
- package/dist/lib/completer/declared.js.map +1 -0
- package/dist/lib/completer/index.js +33 -79
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/parser.d.ts +5 -8
- package/dist/lib/parser.js +2 -11
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +2 -1
- package/dist/lib/vfs/vfs.js +9 -6
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/dist/lib/wildcard.js +2 -3
- package/dist/lib/wildcard.js.map +1 -1
- package/dist/notes.json +1 -1
- package/package.json +6 -5
|
@@ -1,11 +1,50 @@
|
|
|
1
1
|
import { CommandEnvelope } from '@fnndsc/menu';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* `cal [[month] year]`: the declaration.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* commands_register({ declarations: [calCommand] });
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare const calCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
11
|
+
readonly operands: readonly [{
|
|
12
|
+
readonly name: "month";
|
|
13
|
+
readonly kind: "int";
|
|
14
|
+
readonly optional: true;
|
|
15
|
+
readonly summary: "The month, 1 to 12; with no year after it, the year";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "year";
|
|
18
|
+
readonly kind: "int";
|
|
19
|
+
readonly optional: true;
|
|
20
|
+
readonly summary: "The year, 1 to 9999";
|
|
21
|
+
}];
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* `cal` over words already split: the declaration's parse and handler.
|
|
7
25
|
*
|
|
8
|
-
* @param args -
|
|
9
|
-
* @returns
|
|
26
|
+
* @param args - The words after `cal`.
|
|
27
|
+
* @returns The calendar, or the refusal of a bad line.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* await builtin_cal(['7', '2026']);
|
|
32
|
+
* ```
|
|
10
33
|
*/
|
|
11
34
|
export declare function builtin_cal(args: string[]): Promise<CommandEnvelope>;
|
|
35
|
+
/**
|
|
36
|
+
* Reports a calendar as a command envelope.
|
|
37
|
+
*
|
|
38
|
+
* With neither, the current month; with a year alone, the whole year; with
|
|
39
|
+
* both, that month.
|
|
40
|
+
*
|
|
41
|
+
* @param month - The month, 1 to 12, or undefined for none.
|
|
42
|
+
* @param year - The year, 1 to 9999, or undefined for none.
|
|
43
|
+
* @returns An envelope carrying the calendar, or an error envelope on a month or year out of range.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* await cal_run(7, 2026);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function cal_run(month: number | undefined, year: number | undefined): Promise<CommandEnvelope>;
|
package/dist/builtins/sys/cal.js
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import chalk from 'chalk';
|
|
13
13
|
import { envelope_ok, envelope_error } from '@fnndsc/menu';
|
|
14
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
15
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
14
16
|
const MONTHS_LONG = [
|
|
15
17
|
'January', 'February', 'March', 'April', 'May', 'June',
|
|
16
18
|
'July', 'August', 'September', 'October', 'November', 'December',
|
|
@@ -82,29 +84,74 @@ function calendar_year(year, today) {
|
|
|
82
84
|
}
|
|
83
85
|
return `${lines.join('\n')}\n`;
|
|
84
86
|
}
|
|
87
|
+
/** What a `cal` line may hold. */
|
|
88
|
+
const CAL_GRAMMAR = {
|
|
89
|
+
operands: [
|
|
90
|
+
{ name: 'month', kind: 'int', optional: true, summary: 'The month, 1 to 12; with no year after it, the year' },
|
|
91
|
+
{ name: 'year', kind: 'int', optional: true, summary: 'The year, 1 to 9999' },
|
|
92
|
+
],
|
|
93
|
+
};
|
|
85
94
|
/**
|
|
86
|
-
*
|
|
95
|
+
* `cal [[month] year]`: the declaration.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* commands_register({ declarations: [calCommand] });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export const calCommand = command_declare({
|
|
103
|
+
name: 'cal',
|
|
104
|
+
grammar: CAL_GRAMMAR,
|
|
105
|
+
help: {
|
|
106
|
+
summary: 'Print a calendar',
|
|
107
|
+
description: 'Prints a month or year calendar with today highlighted, in the spirit of UNIX cal.',
|
|
108
|
+
examples: ['cal', 'cal 2026', 'cal 7 2026'],
|
|
109
|
+
category: 'Games',
|
|
110
|
+
posix: { group: 'System', differs: 'as cal' },
|
|
111
|
+
},
|
|
112
|
+
holds: [],
|
|
113
|
+
handler: async (args) => args.operands.year === undefined ? cal_run(undefined, args.operands.month) : cal_run(args.operands.month, args.operands.year),
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* `cal` over words already split: the declaration's parse and handler.
|
|
87
117
|
*
|
|
88
|
-
*
|
|
89
|
-
* a
|
|
118
|
+
* @param args - The words after `cal`.
|
|
119
|
+
* @returns The calendar, or the refusal of a bad line.
|
|
90
120
|
*
|
|
91
|
-
* @
|
|
92
|
-
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* await builtin_cal(['7', '2026']);
|
|
124
|
+
* ```
|
|
93
125
|
*/
|
|
94
126
|
export async function builtin_cal(args) {
|
|
127
|
+
return declaredCommand_run(calCommand, args);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Reports a calendar as a command envelope.
|
|
131
|
+
*
|
|
132
|
+
* With neither, the current month; with a year alone, the whole year; with
|
|
133
|
+
* both, that month.
|
|
134
|
+
*
|
|
135
|
+
* @param month - The month, 1 to 12, or undefined for none.
|
|
136
|
+
* @param year - The year, 1 to 9999, or undefined for none.
|
|
137
|
+
* @returns An envelope carrying the calendar, or an error envelope on a month or year out of range.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* await cal_run(7, 2026);
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export async function cal_run(month, year) {
|
|
95
145
|
const now = new Date();
|
|
96
146
|
const today = { year: now.getFullYear(), month: now.getMonth(), day: now.getDate() };
|
|
97
|
-
|
|
98
|
-
if (nums.length === 0) {
|
|
147
|
+
if (year === undefined) {
|
|
99
148
|
return envelope_ok(calendar_month(today.year, today.month, today), { kind: 'sys.cal', data: { year: today.year, month: today.month + 1 } });
|
|
100
149
|
}
|
|
101
|
-
if (
|
|
102
|
-
const year = nums[0];
|
|
150
|
+
if (month === undefined) {
|
|
103
151
|
if (year < 1 || year > 9999)
|
|
104
152
|
return envelope_error(`${chalk.red(`cal: year ${year} out of range (1..9999)`)}\n`);
|
|
105
153
|
return envelope_ok(calendar_year(year, today), { kind: 'sys.cal', data: { year } });
|
|
106
154
|
}
|
|
107
|
-
const [month, year] = nums;
|
|
108
155
|
if (month < 1 || month > 12)
|
|
109
156
|
return envelope_error(`${chalk.red(`cal: ${month} is not a month number (1..12)`)}\n`);
|
|
110
157
|
if (year < 1 || year > 9999)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cal.js","sourceRoot":"","sources":["../../../src/builtins/sys/cal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cal.js","sourceRoot":"","sources":["../../../src/builtins/sys/cal.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,13 +8,33 @@
|
|
|
8
8
|
* `command -v` as it always does), reading whatever was piped in:
|
|
9
9
|
* `query … | command grep -i t1` is plain text grep, no listing logic.
|
|
10
10
|
*
|
|
11
|
+
* Declared in one record (`commandCommand`). Its words after the name are
|
|
12
|
+
* the host program's own line, options and all, so it declares them its own
|
|
13
|
+
* (`grammar: 'expression'`): the GNU option grammar would take `grep -i` for
|
|
14
|
+
* an option of `command`.
|
|
15
|
+
*
|
|
11
16
|
* @module
|
|
12
17
|
*/
|
|
13
18
|
import { CommandEnvelope } from '@fnndsc/menu';
|
|
19
|
+
import type { ExpressionDeclaration } from '../../core/commandDeclaration.js';
|
|
20
|
+
/**
|
|
21
|
+
* `command <name> [args...]`: the declaration.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* commands_register({ declarations: [commandCommand] });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare const commandCommand: ExpressionDeclaration;
|
|
14
29
|
/**
|
|
15
30
|
* `command <name> [args...]`
|
|
16
31
|
*
|
|
17
32
|
* @param args - The program and its words.
|
|
18
33
|
* @returns What the program wrote, or why it could not run.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* await builtin_command(['grep', '-i', 't1']);
|
|
38
|
+
* ```
|
|
19
39
|
*/
|
|
20
40
|
export declare function builtin_command(args: string[]): Promise<CommandEnvelope>;
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
* `command -v` as it always does), reading whatever was piped in:
|
|
9
9
|
* `query … | command grep -i t1` is plain text grep, no listing logic.
|
|
10
10
|
*
|
|
11
|
+
* Declared in one record (`commandCommand`). Its words after the name are
|
|
12
|
+
* the host program's own line, options and all, so it declares them its own
|
|
13
|
+
* (`grammar: 'expression'`): the GNU option grammar would take `grep -i` for
|
|
14
|
+
* an option of `command`.
|
|
15
|
+
*
|
|
11
16
|
* @module
|
|
12
17
|
*/
|
|
13
18
|
import { envelope_ok, envelope_error } from '@fnndsc/menu';
|
|
@@ -18,11 +23,37 @@ import { surface_get } from '../../core/surface.js';
|
|
|
18
23
|
function word_quote(word) {
|
|
19
24
|
return /^[\w@%+=:,./-]+$/.test(word) ? word : `'${word.replace(/'/g, `'\\''`)}'`;
|
|
20
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* `command <name> [args...]`: the declaration.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* commands_register({ declarations: [commandCommand] });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export const commandCommand = {
|
|
35
|
+
name: 'command',
|
|
36
|
+
grammar: 'expression',
|
|
37
|
+
help: {
|
|
38
|
+
usage: 'command <name> [args...]',
|
|
39
|
+
summary: 'Run the system program of a name, not the builtin',
|
|
40
|
+
description: 'Run the system program of a name, skipping the chell builtin of the same name. The whole line goes to the host shell as command <name> <args>, reading whatever was piped in: query … | command grep -i t1 is plain text grep. command -v <name> answers as the host shell does.',
|
|
41
|
+
category: 'General',
|
|
42
|
+
posix: { group: 'Shell', differs: 'as in any POSIX shell: runs the system\'s program, not the builtin' },
|
|
43
|
+
examples: ['query PatientID:1234567 | command grep -i t1', 'command -v grep'],
|
|
44
|
+
},
|
|
45
|
+
handler: (args) => builtin_command(args),
|
|
46
|
+
};
|
|
21
47
|
/**
|
|
22
48
|
* `command <name> [args...]`
|
|
23
49
|
*
|
|
24
50
|
* @param args - The program and its words.
|
|
25
51
|
* @returns What the program wrote, or why it could not run.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* await builtin_command(['grep', '-i', 't1']);
|
|
56
|
+
* ```
|
|
26
57
|
*/
|
|
27
58
|
export async function builtin_command(args) {
|
|
28
59
|
// What was piped in is the program's input; a listing has no meaning there.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/builtins/sys/command.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/builtins/sys/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAmB,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,6CAA6C;AAC7C,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACnF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE;QACJ,KAAK,EAAE,0BAA0B;QACjC,OAAO,EAAE,mDAAmD;QAC5D,WAAW,EAAE,kRAAkR;QAC/R,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,oEAAoE,EAAE;QACxG,QAAQ,EAAE,CAAC,8CAA8C,EAAE,iBAAiB,CAAC;KAC9E;IACD,OAAO,EAAE,CAAC,IAAc,EAA4B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;CAC7E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,4EAA4E;IAC5E,cAAc,EAAE,CAAC;IACjB,MAAM,KAAK,GAAW,UAAU,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,6FAA6F,CAAC,CAAC;IAC3J,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,GAAG,GAAW,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACxH,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { CommandEnvelope } from '@fnndsc/menu';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* `context`: the declaration.
|
|
4
4
|
*
|
|
5
|
-
* @
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* commands_register({ declarations: [contextCommand] }, 'backend');
|
|
8
|
+
* ```
|
|
6
9
|
*/
|
|
7
|
-
export declare
|
|
10
|
+
export declare const contextCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{}>;
|
|
11
|
+
/**
|
|
12
|
+
* `context` over words already split: the declaration's parse and handler.
|
|
13
|
+
*
|
|
14
|
+
* @param args - The words after `context`: none.
|
|
15
|
+
* @returns The context table, or the refusal of a bad line.
|
|
16
|
+
*/
|
|
17
|
+
export declare function builtin_context(args: string[]): Promise<CommandEnvelope>;
|
|
@@ -1,18 +1,65 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
2
|
+
* @file `context`: the session's ChRIS context as a table: user, CUBE,
|
|
3
|
+
* folder, feed, plugin, PACS server and physical mode.
|
|
4
|
+
*
|
|
5
|
+
* Declared in one record (`contextCommand`): it takes no operand or option.
|
|
6
|
+
*
|
|
7
|
+
* Key components:
|
|
8
|
+
* - contextCommand: the declaration.
|
|
9
|
+
* - builtin_context: the declaration run over words already split.
|
|
10
|
+
*
|
|
11
|
+
* Typical usage:
|
|
12
|
+
* ```ts
|
|
13
|
+
* await builtin_context([]);
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Dependencies: salsa's context; chili's table.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
4
19
|
*/
|
|
5
20
|
import chalk from 'chalk';
|
|
6
21
|
import { context_getSingle } from '@fnndsc/salsa';
|
|
7
22
|
import { session } from '../../session/index.js';
|
|
8
23
|
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
9
24
|
import { envelope_ok } from '@fnndsc/menu';
|
|
25
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
26
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
27
|
+
/** What a `context` line may hold: nothing after the command. */
|
|
28
|
+
const CONTEXT_GRAMMAR = {};
|
|
29
|
+
/**
|
|
30
|
+
* `context`: the declaration.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* commands_register({ declarations: [contextCommand] }, 'backend');
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export const contextCommand = command_declare({
|
|
38
|
+
name: 'context',
|
|
39
|
+
grammar: CONTEXT_GRAMMAR,
|
|
40
|
+
help: {
|
|
41
|
+
summary: 'Display current ChRIS context information',
|
|
42
|
+
description: "Shows the session's ChRIS context as a table: the user, the CUBE URL, the folder, feed and plugin, the PACS server, and whether physical mode is on.",
|
|
43
|
+
category: 'Connection',
|
|
44
|
+
examples: ['context'],
|
|
45
|
+
},
|
|
46
|
+
handler: async () => context_run(),
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* `context` over words already split: the declaration's parse and handler.
|
|
50
|
+
*
|
|
51
|
+
* @param args - The words after `context`: none.
|
|
52
|
+
* @returns The context table, or the refusal of a bad line.
|
|
53
|
+
*/
|
|
54
|
+
export async function builtin_context(args) {
|
|
55
|
+
return declaredCommand_run(contextCommand, args);
|
|
56
|
+
}
|
|
10
57
|
/**
|
|
11
58
|
* Displays the current ChRIS context.
|
|
12
59
|
*
|
|
13
|
-
* @
|
|
60
|
+
* @returns The context as a table.
|
|
14
61
|
*/
|
|
15
|
-
|
|
62
|
+
async function context_run() {
|
|
16
63
|
const context = await context_getSingle();
|
|
17
64
|
const tableData = [
|
|
18
65
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/builtins/sys/context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/builtins/sys/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAmB,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AASjE,iEAAiE;AACjE,MAAM,eAAe,GAAG,EAAoC,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE;QACJ,OAAO,EAAE,2CAA2C;QACpD,WAAW,EAAE,sJAAsJ;QACnK,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,OAAO,EAAE,KAAK,IAA8B,EAAE,CAAC,WAAW,EAAE;CAC7D,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,OAAO,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW;IACxB,MAAM,OAAO,GAAkB,MAAM,iBAAiB,EAAE,CAAC;IAEzD,MAAM,SAAS,GAAiB;QAC9B;YACE,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SAC7C;QACD;YACE,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SAC5C;QACD;YACE,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SAC/C;QACD;YACE,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SAC7C;QACD;YACE,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SAC/C;QACD;YACE,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SACnD;QACD;YACE,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;SACtF;KACF,CAAC;IAEF,OAAO,WAAW,CAChB,YAAY,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;QAC5C,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE;KAC3D,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Builtin date.
|
|
3
|
+
*
|
|
4
|
+
* Prints the current date and time, in the spirit of the UNIX `date` command:
|
|
5
|
+
* the default human format, `-u` for UTC, and `+FORMAT` strftime-style format
|
|
6
|
+
* strings. Pure computation — no host `date` binary, no subprocess — so it
|
|
7
|
+
* behaves the same in a local shell, over a CALYPSO daemon, and in the
|
|
8
|
+
* standalone binary. It reports the time only; it never sets the clock.
|
|
9
|
+
* Declared in one record (`dateCommand`).
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
1
13
|
import { CommandEnvelope } from '@fnndsc/menu';
|
|
2
14
|
/**
|
|
3
15
|
* Formats a date with a strftime-style format string.
|
|
@@ -9,12 +21,51 @@ import { CommandEnvelope } from '@fnndsc/menu';
|
|
|
9
21
|
*/
|
|
10
22
|
export declare function date_format(date: Date, format: string, utc: boolean): string;
|
|
11
23
|
/**
|
|
12
|
-
*
|
|
24
|
+
* `date [-u] [+format]`: the declaration.
|
|
13
25
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* commands_register({ declarations: [dateCommand] });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare const dateCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
32
|
+
readonly operands: readonly [{
|
|
33
|
+
readonly name: "format";
|
|
34
|
+
readonly kind: "word";
|
|
35
|
+
readonly optional: true;
|
|
36
|
+
readonly summary: "+ and a strftime-style format (e.g. +%Y-%m-%d, +%H:%M:%S)";
|
|
37
|
+
}];
|
|
38
|
+
readonly options: {
|
|
39
|
+
readonly utc: {
|
|
40
|
+
readonly short: "u";
|
|
41
|
+
readonly long: "utc";
|
|
42
|
+
readonly summary: "Print (or interpret) time in UTC";
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* `date` over words already split: the declaration's parse and handler.
|
|
16
48
|
*
|
|
17
|
-
* @param args -
|
|
18
|
-
* @returns
|
|
49
|
+
* @param args - The words after `date`.
|
|
50
|
+
* @returns The date, or the refusal of a bad line.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* await builtin_date(['-u', '+%Y']);
|
|
55
|
+
* ```
|
|
19
56
|
*/
|
|
20
57
|
export declare function builtin_date(args: string[]): Promise<CommandEnvelope>;
|
|
58
|
+
/**
|
|
59
|
+
* Reports the current date/time as a command envelope: under a `+FORMAT`
|
|
60
|
+
* strftime-style format when one is given, otherwise the default `date` format.
|
|
61
|
+
*
|
|
62
|
+
* @param format - The format, its `+` included, or undefined for the default.
|
|
63
|
+
* @param utc - Whether to report the time in UTC.
|
|
64
|
+
* @returns An envelope carrying the formatted date and an ISO/unix model, or a refusal for a format without its `+`.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* await date_run('+%Y-%m-%d', true);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function date_run(format: string | undefined, utc: boolean): Promise<CommandEnvelope>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { envelope_ok } from '@fnndsc/menu';
|
|
2
1
|
/**
|
|
3
2
|
* @file Builtin date.
|
|
4
3
|
*
|
|
@@ -7,9 +6,14 @@ import { envelope_ok } from '@fnndsc/menu';
|
|
|
7
6
|
* strings. Pure computation — no host `date` binary, no subprocess — so it
|
|
8
7
|
* behaves the same in a local shell, over a CALYPSO daemon, and in the
|
|
9
8
|
* standalone binary. It reports the time only; it never sets the clock.
|
|
9
|
+
* Declared in one record (`dateCommand`).
|
|
10
10
|
*
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
|
+
import { envelope_error, envelope_ok } from '@fnndsc/menu';
|
|
14
|
+
import { exitCode_set } from '../../core/handlerRun.js';
|
|
15
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
16
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
13
17
|
const DAYS_LONG = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
14
18
|
const DAYS_SHORT = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
15
19
|
const MONTHS_LONG = [
|
|
@@ -102,20 +106,70 @@ export function date_format(date, format, utc) {
|
|
|
102
106
|
const expanded = format.replace(/%[DFTRc]/g, (m) => COMPOSITE[m[1]]);
|
|
103
107
|
return expanded.replace(/%([A-Za-z%])/g, (m, code) => (code in simple ? simple[code] : m));
|
|
104
108
|
}
|
|
109
|
+
/** What a `date` line may hold. */
|
|
110
|
+
const DATE_GRAMMAR = {
|
|
111
|
+
operands: [
|
|
112
|
+
{ name: 'format', kind: 'word', optional: true, summary: '+ and a strftime-style format (e.g. +%Y-%m-%d, +%H:%M:%S)' },
|
|
113
|
+
],
|
|
114
|
+
options: {
|
|
115
|
+
utc: { short: 'u', long: 'utc', summary: 'Print (or interpret) time in UTC' },
|
|
116
|
+
},
|
|
117
|
+
};
|
|
105
118
|
/**
|
|
106
|
-
*
|
|
119
|
+
* `date [-u] [+format]`: the declaration.
|
|
107
120
|
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* commands_register({ declarations: [dateCommand] });
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export const dateCommand = command_declare({
|
|
127
|
+
name: 'date',
|
|
128
|
+
grammar: DATE_GRAMMAR,
|
|
129
|
+
help: {
|
|
130
|
+
summary: 'Print the current date and time',
|
|
131
|
+
description: 'Prints the current date and time, in the spirit of UNIX date. Use -u for UTC and +FORMAT for a strftime-style format string. Reports the time only; it never sets the clock.',
|
|
132
|
+
category: 'General',
|
|
133
|
+
posix: { group: 'System', differs: 'as date, with its + formats' },
|
|
134
|
+
examples: ['date', 'date -u', 'date +%Y-%m-%d', 'date "+%A, %B %e %Y"'],
|
|
135
|
+
},
|
|
136
|
+
holds: [],
|
|
137
|
+
handler: async (args) => date_run(args.operands.format, args.options.utc),
|
|
138
|
+
});
|
|
139
|
+
/**
|
|
140
|
+
* `date` over words already split: the declaration's parse and handler.
|
|
110
141
|
*
|
|
111
|
-
* @param args -
|
|
112
|
-
* @returns
|
|
142
|
+
* @param args - The words after `date`.
|
|
143
|
+
* @returns The date, or the refusal of a bad line.
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* await builtin_date(['-u', '+%Y']);
|
|
148
|
+
* ```
|
|
113
149
|
*/
|
|
114
150
|
export async function builtin_date(args) {
|
|
115
|
-
|
|
116
|
-
|
|
151
|
+
return declaredCommand_run(dateCommand, args);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Reports the current date/time as a command envelope: under a `+FORMAT`
|
|
155
|
+
* strftime-style format when one is given, otherwise the default `date` format.
|
|
156
|
+
*
|
|
157
|
+
* @param format - The format, its `+` included, or undefined for the default.
|
|
158
|
+
* @param utc - Whether to report the time in UTC.
|
|
159
|
+
* @returns An envelope carrying the formatted date and an ISO/unix model, or a refusal for a format without its `+`.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* await date_run('+%Y-%m-%d', true);
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export async function date_run(format, utc) {
|
|
167
|
+
if (format !== undefined && !format.startsWith('+')) {
|
|
168
|
+
exitCode_set(1);
|
|
169
|
+
return envelope_error('', undefined, `date: '${format}': a format starts with +, as +%Y-%m-%d; date never sets the clock\n`);
|
|
170
|
+
}
|
|
117
171
|
const now = new Date();
|
|
118
|
-
const rendered = date_format(now,
|
|
172
|
+
const rendered = date_format(now, format !== undefined ? format.slice(1) : DEFAULT_FORMAT, utc);
|
|
119
173
|
return envelope_ok(`${rendered}\n`, {
|
|
120
174
|
kind: 'sys.date',
|
|
121
175
|
data: { iso: now.toISOString(), unix: Math.floor(now.getTime() / 1000) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/builtins/sys/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/builtins/sys/date.ts"],"names":[],"mappings":"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"}
|