@fnndsc/brasa 0.56.2 → 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/berthCube.d.ts +3 -2
- package/dist/builtins/berth/berthCube.js +5 -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/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/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 +38 -2
- package/dist/builtins/help.js +76 -769
- 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 +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 +3 -3
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Each reads what was piped in, else its arguments, and answers in kind:
|
|
5
5
|
* `fortune | rev`, `rot13 hello`, `seq 1 2 9`. `yes` is bounded — a shell
|
|
6
|
-
* that never ends is not a toy — and says how many it printed.
|
|
6
|
+
* that never ends is not a toy — and says how many it printed. Each is
|
|
7
|
+
* declared in one record (`revCommand`, `tacCommand`, `yesCommand`,
|
|
8
|
+
* `seqCommand`, `shufCommand`, `rot13Command`).
|
|
7
9
|
*
|
|
8
10
|
* @module
|
|
9
11
|
*/
|
|
10
12
|
import chalk from 'chalk';
|
|
11
13
|
import { text_input } from './stdin.js';
|
|
12
14
|
import { envelope_ok, envelope_error } from '@fnndsc/menu';
|
|
15
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
16
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
13
17
|
/** Lines `yes` prints when not told how many. */
|
|
14
18
|
export const YES_DEFAULT = 10;
|
|
15
19
|
/** The most lines `yes` prints however it is asked. */
|
|
@@ -36,11 +40,16 @@ export function text_rot13(text) {
|
|
|
36
40
|
/**
|
|
37
41
|
* The numbers `seq` prints: `seq LAST`, `seq FIRST LAST`, `seq FIRST STEP LAST`.
|
|
38
42
|
*
|
|
43
|
+
* @param nums - One to three numbers, as the line gave them.
|
|
39
44
|
* @returns The numbers, or a refusal.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* seq_numbers([2, 5]); // { numbers: [2, 3, 4, 5] }
|
|
49
|
+
* ```
|
|
40
50
|
*/
|
|
41
|
-
export function seq_numbers(
|
|
42
|
-
|
|
43
|
-
if (nums.length === 0 || nums.length > 3 || nums.some((n) => !Number.isFinite(n))) {
|
|
51
|
+
export function seq_numbers(nums) {
|
|
52
|
+
if (nums.length === 0 || nums.length > 3) {
|
|
44
53
|
return { refusal: 'seq: usage: seq [FIRST [STEP]] LAST' };
|
|
45
54
|
}
|
|
46
55
|
const [first, step, last] = nums.length === 1 ? [1, 1, nums[0]]
|
|
@@ -65,66 +74,338 @@ export function lines_shuffle(lines, random = Math.random) {
|
|
|
65
74
|
}
|
|
66
75
|
return out;
|
|
67
76
|
}
|
|
68
|
-
/**
|
|
77
|
+
/** The words of a toy that works on text: what is piped in, else these. */
|
|
78
|
+
const TEXT_OPERAND = { name: 'text', kind: 'word', optional: true, repeat: true, summary: 'The text to work on (default: what is piped in)' };
|
|
79
|
+
/** What a `rev` line may hold. */
|
|
80
|
+
const REV_GRAMMAR = { operands: [TEXT_OPERAND] };
|
|
81
|
+
/**
|
|
82
|
+
* `rev [text]`: the declaration.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* commands_register({ declarations: [revCommand] });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export const revCommand = command_declare({
|
|
90
|
+
name: 'rev',
|
|
91
|
+
grammar: REV_GRAMMAR,
|
|
92
|
+
help: {
|
|
93
|
+
summary: 'Reverse each line',
|
|
94
|
+
description: 'Reverses the characters of each line, keeping the lines in order. Reads what is piped in, else the words given.',
|
|
95
|
+
examples: ['rev stressed', 'fortune | rev'],
|
|
96
|
+
posix: { group: 'Text', differs: 'reads a pipe or its words' },
|
|
97
|
+
},
|
|
98
|
+
holds: [],
|
|
99
|
+
handler: async (args) => rev_run(args.operands.text),
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* `rev` over words already split: the declaration's parse and handler.
|
|
103
|
+
*
|
|
104
|
+
* @param args - The words after `rev`.
|
|
105
|
+
* @returns The reversed text, or the refusal of a bad line.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* await builtin_rev(['stressed']);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
69
112
|
export async function builtin_rev(args) {
|
|
70
|
-
|
|
113
|
+
return declaredCommand_run(revCommand, args);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Reverses each line of the piped text, else of the words.
|
|
117
|
+
*
|
|
118
|
+
* @param words - The words given.
|
|
119
|
+
* @returns The reversed text, or a refusal when there is none.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* await rev_run(['stressed']); // desserts
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export async function rev_run(words) {
|
|
127
|
+
const text = text_input(words);
|
|
71
128
|
if (text === null)
|
|
72
129
|
return envelope_error('', undefined, 'rev: nothing to reverse (pipe text in, or give it)\n');
|
|
73
130
|
const out = text_rev(text.replace(/\n$/, ''));
|
|
74
131
|
return envelope_ok(`${out}\n`, { kind: 'games.rev', data: { text: out } });
|
|
75
132
|
}
|
|
76
|
-
/** `tac
|
|
133
|
+
/** What a `tac` line may hold. */
|
|
134
|
+
const TAC_GRAMMAR = { operands: [TEXT_OPERAND] };
|
|
135
|
+
/**
|
|
136
|
+
* `tac [text]`: the declaration.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* commands_register({ declarations: [tacCommand] });
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export const tacCommand = command_declare({
|
|
144
|
+
name: 'tac',
|
|
145
|
+
grammar: TAC_GRAMMAR,
|
|
146
|
+
help: {
|
|
147
|
+
summary: 'Lines last to first',
|
|
148
|
+
description: 'cat backwards: prints the lines in reverse order. Reads what is piped in.',
|
|
149
|
+
examples: ['help games | tac', 'seq 5 | tac'],
|
|
150
|
+
posix: { group: 'Text', differs: 'reads a pipe or its words' },
|
|
151
|
+
},
|
|
152
|
+
holds: [],
|
|
153
|
+
handler: async (args) => tac_run(args.operands.text),
|
|
154
|
+
});
|
|
155
|
+
/**
|
|
156
|
+
* `tac` over words already split: the declaration's parse and handler.
|
|
157
|
+
*
|
|
158
|
+
* @param args - The words after `tac`.
|
|
159
|
+
* @returns The lines last to first, or the refusal of a bad line.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* await builtin_tac(['a']);
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
77
166
|
export async function builtin_tac(args) {
|
|
78
|
-
|
|
167
|
+
return declaredCommand_run(tacCommand, args);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Turns the lines of the piped text, else of the words, last to first.
|
|
171
|
+
*
|
|
172
|
+
* @param words - The words given.
|
|
173
|
+
* @returns The turned lines, or a refusal when there are none.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```ts
|
|
177
|
+
* await tac_run(['a', 'b']);
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export async function tac_run(words) {
|
|
181
|
+
const text = text_input(words);
|
|
79
182
|
if (text === null)
|
|
80
183
|
return envelope_error('', undefined, 'tac: nothing to turn over (pipe lines in)\n');
|
|
81
184
|
const out = text_tac(text.endsWith('\n') ? text : `${text}\n`);
|
|
82
185
|
return envelope_ok(out, { kind: 'games.tac', data: { text: out } });
|
|
83
186
|
}
|
|
84
|
-
/** `yes
|
|
187
|
+
/** What a `yes` line may hold. */
|
|
188
|
+
const YES_GRAMMAR = {
|
|
189
|
+
operands: [{ name: 'words', kind: 'word', optional: true, repeat: true, summary: 'The word to repeat (default y)' }],
|
|
190
|
+
options: {
|
|
191
|
+
count: { short: 'n', summary: 'Lines to print (default 10, at most 10000)', value: { name: 'N', kind: 'int', min: 1 } },
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* `yes [word] [-n N]`: the declaration.
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```ts
|
|
199
|
+
* commands_register({ declarations: [yesCommand] });
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
export const yesCommand = command_declare({
|
|
203
|
+
name: 'yes',
|
|
204
|
+
grammar: YES_GRAMMAR,
|
|
205
|
+
help: {
|
|
206
|
+
summary: 'Repeat a word (ten times, not forever)',
|
|
207
|
+
description: 'Prints a word on its own line, over and over — but bounded: ten times unless -n N asks for more (up to 10000), and it says how many it printed. The real yes runs until killed; a session is not the place.',
|
|
208
|
+
examples: ['yes', 'yes no -n 3', 'yes | head -n 2'],
|
|
209
|
+
posix: { group: 'Text', differs: 'bounded: ten lines unless told how many, never forever' },
|
|
210
|
+
},
|
|
211
|
+
handler: async (args) => yes_run(args.operands.words, args.options.count),
|
|
212
|
+
});
|
|
213
|
+
/**
|
|
214
|
+
* `yes` over words already split: the declaration's parse and handler.
|
|
215
|
+
*
|
|
216
|
+
* @param args - The words after `yes`.
|
|
217
|
+
* @returns The repeated lines, or the refusal of a bad line.
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```ts
|
|
221
|
+
* await builtin_yes(['no', '-n', '3']);
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
85
224
|
export async function builtin_yes(args) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
225
|
+
return declaredCommand_run(yesCommand, args);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Prints a word a bounded number of times.
|
|
229
|
+
*
|
|
230
|
+
* @param words - The words to repeat, joined by a space; none means `y`.
|
|
231
|
+
* @param requested - How many lines were asked for, or undefined for the default.
|
|
232
|
+
* @returns The lines and a note saying how many.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```ts
|
|
236
|
+
* await yes_run(['no'], 3);
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
export async function yes_run(words, requested) {
|
|
240
|
+
const count = Math.min(requested ?? YES_DEFAULT, YES_MAX);
|
|
100
241
|
const word = words.length > 0 ? words.join(' ') : 'y';
|
|
101
242
|
const lines = `${word}\n`.repeat(count);
|
|
102
243
|
// Bounded on purpose, and it says so: the real yes runs until killed.
|
|
103
244
|
const note = chalk.gray(`yes: ${count} of forever (-n N for more, up to ${YES_MAX})\n`);
|
|
104
245
|
return envelope_ok(lines + note, { kind: 'games.yes', data: { word, count } });
|
|
105
246
|
}
|
|
106
|
-
/** `seq
|
|
247
|
+
/** What a `seq` line may hold. */
|
|
248
|
+
const SEQ_GRAMMAR = {
|
|
249
|
+
operands: [{ name: 'numbers', kind: 'number', repeat: true, summary: '[FIRST [STEP]] LAST' }],
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* `seq [FIRST [STEP]] LAST`: the declaration.
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```ts
|
|
256
|
+
* commands_register({ declarations: [seqCommand] });
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
export const seqCommand = command_declare({
|
|
260
|
+
name: 'seq',
|
|
261
|
+
grammar: SEQ_GRAMMAR,
|
|
262
|
+
help: {
|
|
263
|
+
summary: 'Count from one number to another',
|
|
264
|
+
description: 'Prints the numbers from FIRST to LAST by STEP, one per line, as seq does: seq 5 is 1 to 5, seq 2 10 is 2 to 10, seq 10 -2 0 counts down. At most 100000 numbers.',
|
|
265
|
+
examples: ['seq 5', 'seq 0 5 30', 'seq 10 -1 1 | tac'],
|
|
266
|
+
posix: { group: 'Text', differs: 'as seq' },
|
|
267
|
+
},
|
|
268
|
+
holds: [],
|
|
269
|
+
handler: async (args) => seq_run(args.operands.numbers),
|
|
270
|
+
});
|
|
271
|
+
/**
|
|
272
|
+
* `seq` over words already split: the declaration's parse and handler.
|
|
273
|
+
*
|
|
274
|
+
* @param args - The words after `seq`.
|
|
275
|
+
* @returns The numbers, or the refusal of a bad line.
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* ```ts
|
|
279
|
+
* await builtin_seq(['3']);
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
107
282
|
export async function builtin_seq(args) {
|
|
108
|
-
|
|
283
|
+
return declaredCommand_run(seqCommand, args);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Prints a sequence of numbers.
|
|
287
|
+
*
|
|
288
|
+
* @param nums - FIRST, STEP and LAST as the line gave them (one to three).
|
|
289
|
+
* @returns The numbers one per line, or a refusal.
|
|
290
|
+
*
|
|
291
|
+
* @example
|
|
292
|
+
* ```ts
|
|
293
|
+
* await seq_run([1, 2, 9]);
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
export async function seq_run(nums) {
|
|
297
|
+
const answer = seq_numbers(nums);
|
|
109
298
|
if ('refusal' in answer)
|
|
110
299
|
return envelope_error('', undefined, `${answer.refusal}\n`);
|
|
111
300
|
const note = answer.numbers.length >= SEQ_MAX ? chalk.gray(`seq: stopped at ${SEQ_MAX} numbers\n`) : '';
|
|
112
301
|
return envelope_ok(`${answer.numbers.join('\n')}\n${note}`, { kind: 'games.seq', data: { numbers: answer.numbers } });
|
|
113
302
|
}
|
|
114
|
-
/** `shuf
|
|
303
|
+
/** What a `shuf` line may hold. */
|
|
304
|
+
const SHUF_GRAMMAR = {
|
|
305
|
+
operands: [{ name: 'words', kind: 'word', optional: true, repeat: true, summary: 'The words to shuffle (default: the lines piped in)' }],
|
|
306
|
+
};
|
|
307
|
+
/**
|
|
308
|
+
* `shuf [words...]`: the declaration.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```ts
|
|
312
|
+
* commands_register({ declarations: [shufCommand] });
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
export const shufCommand = command_declare({
|
|
316
|
+
name: 'shuf',
|
|
317
|
+
grammar: SHUF_GRAMMAR,
|
|
318
|
+
help: {
|
|
319
|
+
summary: 'Shuffle lines',
|
|
320
|
+
description: 'Prints the lines piped in, or the words given, in a random order.',
|
|
321
|
+
examples: ['shuf a b c d', 'ls | shuf', 'seq 10 | shuf'],
|
|
322
|
+
posix: { group: 'Text', differs: 'reads a pipe or its words' },
|
|
323
|
+
},
|
|
324
|
+
handler: async (args) => shuf_run(args.operands.words),
|
|
325
|
+
});
|
|
326
|
+
/**
|
|
327
|
+
* `shuf` over words already split: the declaration's parse and handler.
|
|
328
|
+
*
|
|
329
|
+
* @param args - The words after `shuf`.
|
|
330
|
+
* @returns The shuffled lines, or the refusal of a bad line.
|
|
331
|
+
*
|
|
332
|
+
* @example
|
|
333
|
+
* ```ts
|
|
334
|
+
* await builtin_shuf(['a', 'b']);
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
115
337
|
export async function builtin_shuf(args) {
|
|
338
|
+
return declaredCommand_run(shufCommand, args);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Shuffles the lines piped in, else the words given.
|
|
342
|
+
*
|
|
343
|
+
* @param words - The words given.
|
|
344
|
+
* @returns The lines in a random order, or a refusal when there are none.
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* ```ts
|
|
348
|
+
* await shuf_run(['a', 'b', 'c']);
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
export async function shuf_run(words) {
|
|
116
352
|
const piped = text_input([]);
|
|
117
353
|
const lines = piped !== null
|
|
118
354
|
? piped.replace(/\n$/, '').split('\n')
|
|
119
|
-
:
|
|
355
|
+
: [...words];
|
|
120
356
|
if (lines.length === 0)
|
|
121
357
|
return envelope_error('', undefined, 'shuf: nothing to shuffle (pipe lines in, or give words)\n');
|
|
122
358
|
const out = lines_shuffle(lines);
|
|
123
359
|
return envelope_ok(`${out.join('\n')}\n`, { kind: 'games.shuf', data: { lines: out } });
|
|
124
360
|
}
|
|
125
|
-
/** `rot13
|
|
361
|
+
/** What a `rot13` line may hold. */
|
|
362
|
+
const ROT13_GRAMMAR = { operands: [TEXT_OPERAND] };
|
|
363
|
+
/**
|
|
364
|
+
* `rot13 [text]`: the declaration.
|
|
365
|
+
*
|
|
366
|
+
* @example
|
|
367
|
+
* ```ts
|
|
368
|
+
* commands_register({ declarations: [rot13Command] });
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
export const rot13Command = command_declare({
|
|
372
|
+
name: 'rot13',
|
|
373
|
+
grammar: ROT13_GRAMMAR,
|
|
374
|
+
help: {
|
|
375
|
+
summary: 'Turn letters half the alphabet round',
|
|
376
|
+
description: 'ROT13: each letter moved thirteen places, so applying it twice gives the text back. Reads what is piped in, else the words given.',
|
|
377
|
+
examples: ['rot13 hello', 'fortune | rot13 | rot13'],
|
|
378
|
+
},
|
|
379
|
+
holds: [],
|
|
380
|
+
handler: async (args) => rot13_run(args.operands.text),
|
|
381
|
+
});
|
|
382
|
+
/**
|
|
383
|
+
* `rot13` over words already split: the declaration's parse and handler.
|
|
384
|
+
*
|
|
385
|
+
* @param args - The words after `rot13`.
|
|
386
|
+
* @returns The turned text, or the refusal of a bad line.
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```ts
|
|
390
|
+
* await builtin_rot13(['hello']);
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
126
393
|
export async function builtin_rot13(args) {
|
|
127
|
-
|
|
394
|
+
return declaredCommand_run(rot13Command, args);
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Turns the piped text, else the words, thirteen places round the alphabet.
|
|
398
|
+
*
|
|
399
|
+
* @param words - The words given.
|
|
400
|
+
* @returns The turned text, or a refusal when there is none.
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```ts
|
|
404
|
+
* await rot13_run(['hello']); // uryyb
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
export async function rot13_run(words) {
|
|
408
|
+
const text = text_input(words);
|
|
128
409
|
if (text === null)
|
|
129
410
|
return envelope_error('', undefined, 'rot13: nothing to turn (pipe text in, or give it)\n');
|
|
130
411
|
const out = text_rot13(text.replace(/\n$/, ''));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/builtins/games/text.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/builtins/games/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,72 @@
|
|
|
1
1
|
import { CommandEnvelope } from '@fnndsc/menu';
|
|
2
2
|
/**
|
|
3
|
-
* `trek [--classic] [-f | -s] [--seed N]
|
|
3
|
+
* `trek [--classic] [-f | -s] [--seed N] [--credits]`: the declaration.
|
|
4
4
|
*
|
|
5
|
-
* @
|
|
6
|
-
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* commands_register({ declarations: [trekCommand] });
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare const trekCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
|
|
11
|
+
readonly options: {
|
|
12
|
+
readonly classic: {
|
|
13
|
+
readonly long: "classic";
|
|
14
|
+
readonly summary: "Show the scans as printed in 1976, without glyphs or colour";
|
|
15
|
+
};
|
|
16
|
+
readonly fast: {
|
|
17
|
+
readonly short: "f";
|
|
18
|
+
readonly summary: "The original fast mode";
|
|
19
|
+
};
|
|
20
|
+
readonly slow: {
|
|
21
|
+
readonly short: "s";
|
|
22
|
+
readonly summary: "The original slow mode";
|
|
23
|
+
};
|
|
24
|
+
readonly seed: {
|
|
25
|
+
readonly long: "seed";
|
|
26
|
+
readonly summary: "Replay the galaxy of this seed";
|
|
27
|
+
readonly value: {
|
|
28
|
+
readonly name: "N";
|
|
29
|
+
readonly kind: "int";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
readonly credits: {
|
|
33
|
+
readonly long: "credits";
|
|
34
|
+
readonly summary: "Name who made the game, instead of playing it";
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* `trek` over words already split: the declaration's parse and handler.
|
|
40
|
+
*
|
|
41
|
+
* @param args - The words after `trek`.
|
|
42
|
+
* @returns The game's end, or the refusal of a bad line.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* await builtin_trek(['--seed', '42']);
|
|
47
|
+
* ```
|
|
7
48
|
*/
|
|
8
49
|
export declare function builtin_trek(args: string[]): Promise<CommandEnvelope>;
|
|
50
|
+
/**
|
|
51
|
+
* Plays `trek`, or names who made it.
|
|
52
|
+
*
|
|
53
|
+
* @param options - The line's options.
|
|
54
|
+
* @param options.classic - The original look.
|
|
55
|
+
* @param options.fast - The original fast mode.
|
|
56
|
+
* @param options.slow - The original slow mode (it wins over fast).
|
|
57
|
+
* @param options.seed - The galaxy's seed; absent, the clock's.
|
|
58
|
+
* @param options.credits - Name the makers instead of playing.
|
|
59
|
+
* @returns The game's end.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* await trek_run({ classic: true, fast: false, slow: false, seed: 42, credits: false });
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function trek_run(options: {
|
|
67
|
+
readonly classic: boolean;
|
|
68
|
+
readonly fast: boolean;
|
|
69
|
+
readonly slow: boolean;
|
|
70
|
+
readonly seed: number | undefined;
|
|
71
|
+
readonly credits: boolean;
|
|
72
|
+
}): Promise<CommandEnvelope>;
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import chalk from 'chalk';
|
|
15
15
|
import { envelope_error, envelope_ok } from '@fnndsc/menu';
|
|
16
|
-
import { TREK_CREDITS, trek_play
|
|
16
|
+
import { TREK_CREDITS, trek_play } from 'bsd-trek';
|
|
17
|
+
import { command_declare } from '../../core/commandDeclaration.js';
|
|
18
|
+
import { declaredCommand_run } from '../../core/commandParse.js';
|
|
17
19
|
import { repl_question } from '../../core/question.js';
|
|
18
20
|
import { sink_get } from '../../core/sink.js';
|
|
19
21
|
/** The session's saved game: `dump` writes it, a `restart` length reads it back. */
|
|
@@ -39,21 +41,72 @@ const SESSION_TERMINAL = {
|
|
|
39
41
|
seconds_sleep: (seconds) => new Promise((resolve) => { setTimeout(resolve, seconds * 1000); }),
|
|
40
42
|
state_show: (state) => { sink_get().event_write?.('games.trek.state', state); },
|
|
41
43
|
};
|
|
44
|
+
/** What a `trek` line may hold: the look, the pace, the galaxy's seed, the credits. */
|
|
45
|
+
const TREK_GRAMMAR = {
|
|
46
|
+
options: {
|
|
47
|
+
classic: { long: 'classic', summary: 'Show the scans as printed in 1976, without glyphs or colour' },
|
|
48
|
+
fast: { short: 'f', summary: 'The original fast mode' },
|
|
49
|
+
slow: { short: 's', summary: 'The original slow mode' },
|
|
50
|
+
seed: { long: 'seed', summary: 'Replay the galaxy of this seed', value: { name: 'N', kind: 'int' } },
|
|
51
|
+
credits: { long: 'credits', summary: 'Name who made the game, instead of playing it' },
|
|
52
|
+
},
|
|
53
|
+
};
|
|
42
54
|
/**
|
|
43
|
-
* `trek [--classic] [-f | -s] [--seed N]
|
|
55
|
+
* `trek [--classic] [-f | -s] [--seed N] [--credits]`: the declaration.
|
|
44
56
|
*
|
|
45
|
-
* @
|
|
46
|
-
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* commands_register({ declarations: [trekCommand] });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export const trekCommand = command_declare({
|
|
63
|
+
name: 'trek',
|
|
64
|
+
grammar: TREK_GRAMMAR,
|
|
65
|
+
help: {
|
|
66
|
+
summary: 'The 1976 Berkeley space war game (BSD trek)',
|
|
67
|
+
description: 'Command a starship against an invading fleet across an 8×8 galaxy of quadrants, by question: srscan, lrscan, move, phasers, torpedo, shield, dock, computer and the rest (? at any prompt lists the answers it takes). Answers can be typed ahead on one line, as in the original. The scans wear glyphs and colours; --classic shows them as printed in 1976. -f and -s are the original fast and slow modes; --seed N replays a galaxy; --credits (or credits in the game) names who made it. terminate ends a game; answer no to Another game to leave.',
|
|
68
|
+
examples: ['trek', 'trek --classic', 'trek --seed 42', 'trek --credits'],
|
|
69
|
+
},
|
|
70
|
+
handler: async (args) => trek_run(args.options),
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* `trek` over words already split: the declaration's parse and handler.
|
|
74
|
+
*
|
|
75
|
+
* @param args - The words after `trek`.
|
|
76
|
+
* @returns The game's end, or the refusal of a bad line.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* await builtin_trek(['--seed', '42']);
|
|
81
|
+
* ```
|
|
47
82
|
*/
|
|
48
83
|
export async function builtin_trek(args) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
84
|
+
return declaredCommand_run(trekCommand, args);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Plays `trek`, or names who made it.
|
|
88
|
+
*
|
|
89
|
+
* @param options - The line's options.
|
|
90
|
+
* @param options.classic - The original look.
|
|
91
|
+
* @param options.fast - The original fast mode.
|
|
92
|
+
* @param options.slow - The original slow mode (it wins over fast).
|
|
93
|
+
* @param options.seed - The galaxy's seed; absent, the clock's.
|
|
94
|
+
* @param options.credits - Name the makers instead of playing.
|
|
95
|
+
* @returns The game's end.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* await trek_run({ classic: true, fast: false, slow: false, seed: 42, credits: false });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export async function trek_run(options) {
|
|
103
|
+
if (options.credits)
|
|
53
104
|
return envelope_ok(TREK_CREDITS, { kind: 'games.trek.credits', data: {} });
|
|
105
|
+
const seed = options.seed ?? Math.floor(Date.now() / 1000);
|
|
106
|
+
const fast = options.slow ? 0 : options.fast ? 2 : 1;
|
|
54
107
|
try {
|
|
55
|
-
const code = await trek_play(SESSION_TERMINAL, { seed
|
|
56
|
-
return envelope_ok('', { kind: 'games.trek', data: { seed
|
|
108
|
+
const code = await trek_play(SESSION_TERMINAL, { seed, fast, trace: 0, styled: !options.classic && chalk.level > 0 }, TREK_DUMP);
|
|
109
|
+
return envelope_ok('', { kind: 'games.trek', data: { seed, exit: code } });
|
|
57
110
|
}
|
|
58
111
|
catch (error) {
|
|
59
112
|
return envelope_error('', undefined, `trek: cannot ask here (${error instanceof Error ? error.message : String(error)})\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trek.js","sourceRoot":"","sources":["../../../src/builtins/games/trek.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"trek.js","sourceRoot":"","sources":["../../../src/builtins/games/trek.ts"],"names":[],"mappings":"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"}
|