@fnndsc/brasa 0.56.1 → 0.56.2

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.
Files changed (98) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/berth/berth.d.ts +90 -3
  3. package/dist/builtins/berth/berth.js +129 -76
  4. package/dist/builtins/berth/berth.js.map +1 -1
  5. package/dist/builtins/berth/berthClose.d.ts +25 -6
  6. package/dist/builtins/berth/berthClose.js +8 -64
  7. package/dist/builtins/berth/berthClose.js.map +1 -1
  8. package/dist/builtins/berth/berthCube.js +4 -6
  9. package/dist/builtins/berth/berthCube.js.map +1 -1
  10. package/dist/builtins/berth/berthProcesses.js +33 -3
  11. package/dist/builtins/berth/berthProcesses.js.map +1 -1
  12. package/dist/builtins/fs/cat.js +3 -3
  13. package/dist/builtins/fs/cat.js.map +1 -1
  14. package/dist/builtins/fs/cp.js +3 -2
  15. package/dist/builtins/fs/cp.js.map +1 -1
  16. package/dist/builtins/fs/download.d.ts +31 -4
  17. package/dist/builtins/fs/download.js +75 -38
  18. package/dist/builtins/fs/download.js.map +1 -1
  19. package/dist/builtins/fs/ls.d.ts +69 -4
  20. package/dist/builtins/fs/ls.js +84 -45
  21. package/dist/builtins/fs/ls.js.map +1 -1
  22. package/dist/builtins/fs/pull.js +37 -9
  23. package/dist/builtins/fs/pull.js.map +1 -1
  24. package/dist/builtins/help.d.ts +3 -1
  25. package/dist/builtins/help.js +22 -33
  26. package/dist/builtins/help.js.map +1 -1
  27. package/dist/builtins/res/dicom.d.ts +3 -4
  28. package/dist/builtins/res/dicom.js +5 -19
  29. package/dist/builtins/res/dicom.js.map +1 -1
  30. package/dist/builtins/sys/textFilters.js +2 -2
  31. package/dist/builtins/sys/textFilters.js.map +1 -1
  32. package/dist/builtins/utils.d.ts +1 -1
  33. package/dist/builtins/utils.js +1 -1
  34. package/dist/builtins/utils.js.map +1 -1
  35. package/dist/chris/backend.js +2 -0
  36. package/dist/chris/backend.js.map +1 -1
  37. package/dist/chris/chrisCommands.js +6 -9
  38. package/dist/chris/chrisCommands.js.map +1 -1
  39. package/dist/chris/files.js +24 -85
  40. package/dist/chris/files.js.map +1 -1
  41. package/dist/chris/help.js +0 -64
  42. package/dist/chris/help.js.map +1 -1
  43. package/dist/chris/kinds.d.ts +9 -0
  44. package/dist/chris/kinds.js +42 -0
  45. package/dist/chris/kinds.js.map +1 -0
  46. package/dist/chris/promptContext.d.ts +6 -0
  47. package/dist/chris/promptContext.js +3 -1
  48. package/dist/chris/promptContext.js.map +1 -1
  49. package/dist/core/argumentKinds.d.ts +107 -0
  50. package/dist/core/argumentKinds.js +223 -0
  51. package/dist/core/argumentKinds.js.map +1 -0
  52. package/dist/core/backend.d.ts +4 -1
  53. package/dist/core/backend.js.map +1 -1
  54. package/dist/core/commandDeclaration.d.ts +363 -0
  55. package/dist/core/commandDeclaration.js +31 -0
  56. package/dist/core/commandDeclaration.js.map +1 -0
  57. package/dist/core/commandParse.d.ts +64 -0
  58. package/dist/core/commandParse.js +420 -0
  59. package/dist/core/commandParse.js.map +1 -0
  60. package/dist/core/commandRegistry.d.ts +36 -0
  61. package/dist/core/commandRegistry.js +72 -3
  62. package/dist/core/commandRegistry.js.map +1 -1
  63. package/dist/core/commandSchema.d.ts +32 -0
  64. package/dist/core/commandSchema.js +114 -0
  65. package/dist/core/commandSchema.js.map +1 -0
  66. package/dist/core/commandUsage.d.ts +47 -0
  67. package/dist/core/commandUsage.js +195 -0
  68. package/dist/core/commandUsage.js.map +1 -0
  69. package/dist/core/coreCommands.js +5 -4
  70. package/dist/core/coreCommands.js.map +1 -1
  71. package/dist/core/dispatch.js +15 -8
  72. package/dist/core/dispatch.js.map +1 -1
  73. package/dist/core/paths.d.ts +23 -0
  74. package/dist/core/paths.js +73 -2
  75. package/dist/core/paths.js.map +1 -1
  76. package/dist/core/preprocess.d.ts +10 -8
  77. package/dist/core/preprocess.js +11 -20
  78. package/dist/core/preprocess.js.map +1 -1
  79. package/dist/core/warmupFailures.d.ts +34 -2
  80. package/dist/core/warmupFailures.js +43 -2
  81. package/dist/core/warmupFailures.js.map +1 -1
  82. package/dist/lib/completer/cfsPaths.d.ts +14 -0
  83. package/dist/lib/completer/cfsPaths.js +91 -0
  84. package/dist/lib/completer/cfsPaths.js.map +1 -0
  85. package/dist/lib/completer/declared.d.ts +15 -0
  86. package/dist/lib/completer/declared.js +186 -0
  87. package/dist/lib/completer/declared.js.map +1 -0
  88. package/dist/lib/completer/index.js +33 -74
  89. package/dist/lib/completer/index.js.map +1 -1
  90. package/dist/lib/parser.d.ts +5 -0
  91. package/dist/lib/parser.js +2 -0
  92. package/dist/lib/parser.js.map +1 -1
  93. package/dist/lib/vfs/vfs.js +4 -2
  94. package/dist/lib/vfs/vfs.js.map +1 -1
  95. package/dist/lib/wildcard.js +2 -3
  96. package/dist/lib/wildcard.js.map +1 -1
  97. package/dist/notes.json +1 -1
  98. package/package.json +5 -4
@@ -1 +1 @@
1
- {"hash":"ce89dc"}
1
+ {"hash":"4b6956"}
@@ -1,10 +1,97 @@
1
1
  import { type CommandEnvelope } from '@fnndsc/menu';
2
- /** The verb's usage line. */
3
- export declare const BERTH_USAGE: string;
4
2
  /** The size above which an anchor asks before it downloads: 10 GB. */
5
3
  export declare const ANCHOR_ASK_BYTES: number;
6
4
  /**
7
- * `berth [anchor … | close … | drop <name> | clear]`: the anchors of this session's berth, and its close.
5
+ * `berth [anchor … | close … | drop <name> | clear]`: the declaration.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * commands_register({ declarations: [berthCommand] }, 'backend');
10
+ * ```
11
+ */
12
+ export declare const berthCommand: import("../../core/commandDeclaration.js").CommandDeclaration<{
13
+ readonly bare: {
14
+ readonly summary: "List the anchors: name, ChRIS path, node or none, files, size, when anchored; and when the berth last closed";
15
+ };
16
+ readonly subcommands: {
17
+ readonly anchor: {
18
+ readonly summary: "Download a ChRIS path you can read into <anchors>/<name>/, named by its last part unless a name is given";
19
+ readonly operands: readonly [{
20
+ readonly name: "path";
21
+ readonly kind: "cfsPath";
22
+ readonly glob: true;
23
+ readonly summary: "The ChRIS path: a file or folder you can read";
24
+ }, {
25
+ readonly name: "name";
26
+ readonly kind: "word";
27
+ readonly optional: true;
28
+ readonly summary: "The anchor's name; the path's last part when none is given";
29
+ }];
30
+ readonly options: {
31
+ readonly refresh: {
32
+ readonly long: "refresh";
33
+ readonly summary: "Download an anchor that stands again";
34
+ };
35
+ readonly yes: {
36
+ readonly short: "y";
37
+ readonly long: "yes";
38
+ readonly summary: "Answer yes to the question above 10 GB";
39
+ };
40
+ };
41
+ };
42
+ readonly close: {
43
+ readonly summary: "Upload the outgoing folder, with berth.json, to ~/berth/<uuid>/ and make it one node (pl-dsdircopy): a child of the node every anchor is under, or a new feed when none is";
44
+ readonly options: {
45
+ readonly infeed: {
46
+ readonly long: "infeed";
47
+ readonly summary: "A child of that anchor's node";
48
+ readonly value: {
49
+ readonly name: "anchor";
50
+ readonly kind: "anchor";
51
+ };
52
+ };
53
+ readonly newfeed: {
54
+ readonly long: "newfeed";
55
+ readonly summary: "A new feed over every anchor";
56
+ };
57
+ readonly name: {
58
+ readonly long: "name";
59
+ readonly summary: "The new feed's name";
60
+ readonly value: {
61
+ readonly name: "feed";
62
+ readonly kind: "word";
63
+ };
64
+ };
65
+ readonly title: {
66
+ readonly long: "title";
67
+ readonly summary: `The node's title (${string})`;
68
+ readonly value: {
69
+ readonly name: "text";
70
+ readonly kind: "word";
71
+ };
72
+ };
73
+ readonly force: {
74
+ readonly short: "f";
75
+ readonly long: "force";
76
+ readonly summary: "Answer yes when your processes still run";
77
+ };
78
+ };
79
+ };
80
+ readonly drop: {
81
+ readonly summary: "Remove one anchor; ChRIS still holds it";
82
+ readonly operands: readonly [{
83
+ readonly name: "name";
84
+ readonly kind: "anchor";
85
+ readonly summary: "The anchor";
86
+ }];
87
+ };
88
+ readonly clear: {
89
+ readonly summary: "Remove every anchor and empty the outgoing folder; asks first when it holds files not yet closed";
90
+ };
91
+ };
92
+ }>;
93
+ /**
94
+ * `berth` over words already split: the declaration's parse and handler.
8
95
  *
9
96
  * @param args - The words after `berth`.
10
97
  * @returns The answer, or a refusal in POSIX tone.
@@ -15,9 +15,13 @@
15
15
  * their write permission, and the state file keeps what was downloaded, for
16
16
  * the close.
17
17
  *
18
+ * Declared in one record (`berthCommand`): the subcommands, their operands
19
+ * and options, an anchor's name a ChRIS argument kind (`anchor`) that
20
+ * completes from the berth's state.
21
+ *
18
22
  * Key components:
19
- * - builtin_berth: the verb and its subcommands.
20
- * - BERTH_USAGE: its usage line.
23
+ * - berthCommand: the declaration: the verb and its subcommands.
24
+ * - builtin_berth: the declaration run over words already split.
21
25
  * - ANCHOR_ASK_BYTES: the size above which an anchor asks first.
22
26
  *
23
27
  * Typical usage:
@@ -38,18 +42,17 @@ import { pipeline } from 'node:stream/promises';
38
42
  import chalk from 'chalk';
39
43
  import { size_format } from '@fnndsc/fond';
40
44
  import { envelope_error, envelope_ok } from '@fnndsc/menu';
45
+ import { command_declare } from '../../core/commandDeclaration.js';
46
+ import { declaredCommand_run } from '../../core/commandParse.js';
47
+ import { commandUsage_render } from '../../core/commandUsage.js';
41
48
  import { exitCode_set } from '../../core/handlerRun.js';
42
49
  import { repl_confirm } from '../../core/question.js';
43
50
  import { sink_dataLine, sink_get } from '../../core/sink.js';
44
51
  import { berthHome_get, berthPath_resolve, nodeStatus_get, remoteEntry_read, remoteFile_locate, remoteFile_open, remoteTree_list, } from './berthCube.js';
45
- import { close_run } from './berthClose.js';
52
+ import { close_run, WORK_TITLE } from './berthClose.js';
46
53
  import { freeBytes_get } from './berthDisk.js';
47
54
  import { BERTH_STATE_FILE, berthPlaces_read, berthState_read, berthState_update, } from './berthState.js';
48
55
  import { anchorNode_show, BerthRefusal, bytes_sum, columns_render, count_say } from './berthWords.js';
49
- /** The verb's usage line. */
50
- export const BERTH_USAGE = 'berth [anchor <path> [name] [--refresh] [--yes] | close [--infeed <anchor> | --newfeed] [--name <feed>] [--title <text>] [--force] | drop <name> | clear]';
51
- /** The anchor subcommand's usage line. */
52
- const ANCHOR_USAGE = 'berth anchor <path> [name] [--refresh] [--yes]';
53
56
  /** The size above which an anchor asks before it downloads: 10 GB. */
54
57
  export const ANCHOR_ASK_BYTES = 10 * 1024 ** 3;
55
58
  /** The one status of a node whose output is anchored. */
@@ -58,6 +61,14 @@ const NODE_FINISHED = 'finishedSuccessfully';
58
61
  const PARTIAL_PREFIX = '.partial-';
59
62
  /** The write bits a downloaded file loses. */
60
63
  const WRITE_BITS = 0o222;
64
+ /**
65
+ * The anchor subcommand's usage line, from the declaration.
66
+ *
67
+ * @returns The line.
68
+ */
69
+ function anchorUsage_get() {
70
+ return commandUsage_render(berthCommand, 'anchor');
71
+ }
61
72
  /**
62
73
  * Says a refusal on the error channel and fails the line.
63
74
  *
@@ -81,31 +92,6 @@ function places_require(subcommand) {
81
92
  throw new BerthRefusal(`${subcommand}: this session runs on the host, not in a berth`);
82
93
  return places;
83
94
  }
84
- /**
85
- * Reads `berth anchor`'s words.
86
- *
87
- * @param args - The words after `anchor`.
88
- * @returns The request.
89
- * @throws {BerthRefusal} For an unknown option, or a missing or extra operand.
90
- */
91
- function anchorRequest_parse(args) {
92
- const operands = [];
93
- let refresh = false;
94
- let yes = false;
95
- for (const arg of args) {
96
- if (arg === '--refresh')
97
- refresh = true;
98
- else if (arg === '--yes' || arg === '-y')
99
- yes = true;
100
- else if (arg.startsWith('-') && arg !== '-')
101
- throw new BerthRefusal(`anchor: unknown option ${arg}; ${ANCHOR_USAGE}`);
102
- else
103
- operands.push(arg);
104
- }
105
- if (operands.length === 0 || operands.length > 2)
106
- throw new BerthRefusal(`anchor: usage: ${ANCHOR_USAGE}`);
107
- return { typed: operands[0], name: operands[1], refresh, yes };
108
- }
109
95
  /**
110
96
  * Refuses a name that cannot be a folder of the anchors place: empty, with a
111
97
  * `/`, `.` or `..`, or starting with `.` (the state file's and a download's own).
@@ -230,9 +216,9 @@ async function sourceFiles_list(source, typed) {
230
216
  function anchorName_claim(places, name, source, request) {
231
217
  const standing = berthState_read(places.anchors).anchors.find((anchor) => anchor.name === name);
232
218
  if (standing !== undefined && standing.path !== source.path) {
233
- throw new BerthRefusal(`anchor: the anchor ${name} holds ${standing.path}; name this one: ${ANCHOR_USAGE.replace('[name]', '<name>')}`);
219
+ throw new BerthRefusal(`anchor: the anchor ${name} holds ${standing.path}; name this one: ${anchorUsage_get().replace('[name]', '<name>')}`);
234
220
  }
235
- if (standing !== undefined && !request.refresh) {
221
+ if (standing !== undefined && !request.options.refresh) {
236
222
  throw new BerthRefusal(`anchor: ${name} is anchored already; --refresh downloads it again`);
237
223
  }
238
224
  if (standing === undefined && existsSync(join(places.anchors, name))) {
@@ -267,22 +253,22 @@ async function anchorSize_settle(places, name, files, freed, yes) {
267
253
  * `berth anchor <path> [name] [--refresh] [--yes]`: downloads a ChRIS path
268
254
  * into `<anchors>/<name>/` and records it.
269
255
  *
270
- * @param args - The words after `anchor`.
256
+ * @param request - The line.
271
257
  * @returns What was anchored, or the refusal.
272
258
  * @throws {BerthRefusal} As the steps refuse.
273
259
  */
274
- async function anchor_run(args) {
260
+ async function anchor_run(request) {
275
261
  const places = places_require('anchor');
276
- const request = anchorRequest_parse(args);
277
- const resolved = await berthPath_resolve(request.typed);
262
+ const typed = request.operands.path;
263
+ const resolved = await berthPath_resolve(typed);
278
264
  const source = await anchorSource_find(resolved, await berthHome_get());
279
- const name = request.name ?? source.defaultName;
265
+ const name = request.operands.name ?? source.defaultName;
280
266
  anchorName_check(name);
281
267
  const standing = anchorName_claim(places, name, source, request);
282
268
  await nodeFinished_check(source);
283
- const files = await sourceFiles_list(source, request.typed);
269
+ const files = await sourceFiles_list(source, typed);
284
270
  const freed = standing === null ? 0 : bytes_sum(standing.files);
285
- if (!await anchorSize_settle(places, name, files, freed, request.yes)) {
271
+ if (!await anchorSize_settle(places, name, files, freed, request.options.yes)) {
286
272
  exitCode_set(1);
287
273
  return envelope_ok(`berth: anchor: ${name}: nothing downloaded\n`);
288
274
  }
@@ -340,7 +326,7 @@ function berth_list() {
340
326
  const state = berthState_read(places.anchors);
341
327
  const closed = `last close: ${state.lastClosedAt === null ? 'never' : time_show(state.lastClosedAt)}`;
342
328
  if (state.anchors.length === 0) {
343
- return envelope_ok(`no anchors in ${places.anchors}; ${ANCHOR_USAGE} downloads one\n${chalk.gray(closed)}\n`);
329
+ return envelope_ok(`no anchors in ${places.anchors}; ${anchorUsage_get()} downloads one\n${chalk.gray(closed)}\n`);
344
330
  }
345
331
  const rows = [
346
332
  ['NAME', 'PATH', 'NODE', 'FILES', 'SIZE', 'ANCHORED'],
@@ -354,15 +340,12 @@ function berth_list() {
354
340
  /**
355
341
  * `berth drop <name>`: removes one anchor, with no question, since ChRIS still holds it.
356
342
  *
357
- * @param args - The words after `drop`.
343
+ * @param name - The anchor's name.
358
344
  * @returns What was dropped.
359
- * @throws {BerthRefusal} For no name, or no anchor of that name.
345
+ * @throws {BerthRefusal} For no anchor of that name.
360
346
  */
361
- function drop_run(args) {
347
+ function drop_run(name) {
362
348
  const places = places_require('drop');
363
- if (args.length !== 1)
364
- throw new BerthRefusal('drop: usage: berth drop <name>');
365
- const name = args[0];
366
349
  const anchor = berthState_read(places.anchors).anchors.find((one) => one.name === name);
367
350
  if (anchor === undefined)
368
351
  throw new BerthRefusal(`drop: no anchor named ${name}`);
@@ -406,14 +389,10 @@ function folder_empty(folder) {
406
389
  * `berth clear`: removes every anchor and empties the outgoing folder, asking
407
390
  * first only when the outgoing folder holds files not yet closed.
408
391
  *
409
- * @param args - The words after `clear`.
410
392
  * @returns What was removed, or that nothing was.
411
- * @throws {BerthRefusal} For any word after clear.
412
393
  */
413
- async function clear_run(args) {
394
+ async function clear_run() {
414
395
  const places = places_require('clear');
415
- if (args.length !== 0)
416
- throw new BerthRefusal('clear: usage: berth clear');
417
396
  const state = berthState_read(places.anchors);
418
397
  const since = state.lastClosedAt === null ? null : Date.parse(state.lastClosedAt);
419
398
  const unclosed = filesChanged_list(places.outgoing, since);
@@ -432,8 +411,103 @@ async function clear_run(args) {
432
411
  folder_empty(places.outgoing);
433
412
  return envelope_ok(`${chalk.gray(`cleared ${count_say(state.anchors.length, 'anchor')} and emptied ${places.outgoing}`)}\n`);
434
413
  }
414
+ /** What a `berth` line may hold. */
415
+ const BERTH_GRAMMAR = {
416
+ bare: { summary: 'List the anchors: name, ChRIS path, node or none, files, size, when anchored; and when the berth last closed' },
417
+ subcommands: {
418
+ anchor: {
419
+ summary: 'Download a ChRIS path you can read into <anchors>/<name>/, named by its last part unless a name is given',
420
+ operands: [
421
+ { name: 'path', kind: 'cfsPath', glob: true, summary: 'The ChRIS path: a file or folder you can read' },
422
+ { name: 'name', kind: 'word', optional: true, summary: "The anchor's name; the path's last part when none is given" },
423
+ ],
424
+ options: {
425
+ refresh: { long: 'refresh', summary: 'Download an anchor that stands again' },
426
+ yes: { short: 'y', long: 'yes', summary: 'Answer yes to the question above 10 GB' },
427
+ },
428
+ },
429
+ close: {
430
+ summary: 'Upload the outgoing folder, with berth.json, to ~/berth/<uuid>/ and make it one node (pl-dsdircopy): a child of the node every anchor is under, or a new feed when none is',
431
+ options: {
432
+ infeed: { long: 'infeed', summary: "A child of that anchor's node", value: { name: 'anchor', kind: 'anchor' } },
433
+ newfeed: { long: 'newfeed', summary: 'A new feed over every anchor' },
434
+ name: { long: 'name', summary: "The new feed's name", value: { name: 'feed', kind: 'word' } },
435
+ title: { long: 'title', summary: `The node's title (${WORK_TITLE})`, value: { name: 'text', kind: 'word' } },
436
+ force: { short: 'f', long: 'force', summary: 'Answer yes when your processes still run' },
437
+ },
438
+ },
439
+ drop: {
440
+ summary: 'Remove one anchor; ChRIS still holds it',
441
+ operands: [{ name: 'name', kind: 'anchor', summary: 'The anchor' }],
442
+ },
443
+ clear: { summary: 'Remove every anchor and empty the outgoing folder; asks first when it holds files not yet closed' },
444
+ },
445
+ };
446
+ /**
447
+ * Runs one `berth` line, saying a refusal in POSIX tone.
448
+ *
449
+ * @param args - The line, parsed.
450
+ * @returns The answer, or the refusal.
451
+ */
452
+ async function berth_run(args) {
453
+ try {
454
+ switch (args.subcommand) {
455
+ case null: return berth_list();
456
+ case 'anchor': return await anchor_run(args);
457
+ case 'drop': return drop_run(args.operands.name);
458
+ case 'clear': return await clear_run();
459
+ case 'close': return await close_run(places_require('close'), {
460
+ infeed: args.options.infeed ?? null,
461
+ newfeed: args.options.newfeed,
462
+ name: args.options.name ?? null,
463
+ title: args.options.title ?? WORK_TITLE,
464
+ force: args.options.force,
465
+ });
466
+ }
467
+ }
468
+ catch (error) {
469
+ if (error instanceof BerthRefusal)
470
+ return berth_refuse(error.message);
471
+ const reason = error instanceof Error ? error.message : String(error);
472
+ return berth_refuse(args.subcommand === null ? reason : `${args.subcommand}: ${reason}`);
473
+ }
474
+ }
475
+ /**
476
+ * `berth [anchor … | close … | drop <name> | clear]`: the declaration.
477
+ *
478
+ * @example
479
+ * ```ts
480
+ * commands_register({ declarations: [berthCommand] }, 'backend');
481
+ * ```
482
+ */
483
+ export const berthCommand = command_declare({
484
+ name: 'berth',
485
+ grammar: BERTH_GRAMMAR,
486
+ help: {
487
+ summary: "The ChRIS paths downloaded into this session's berth, and the work returned: anchor, list, close, drop, clear",
488
+ description: "Anchor ChRIS paths in this session's berth: download each into the anchors folder, list them, return the outgoing folder to ChRIS as one node, drop one, or clear them all. Under your own ~/feeds an anchor has a node, the plugin instance its path runs through, which must be finishedSuccessfully; anywhere else (uploads, PACS, /PUBLIC, /SHARED) it has none. Anchors of two nodes, or of a node and of none, want --infeed or --newfeed to close, never both. A close removes nothing. help anchors says more. On a host, not in a berth, berth says so and refuses the subcommands.",
489
+ category: 'Workflows',
490
+ examples: [
491
+ 'berth',
492
+ 'berth anchor ~/feeds/feed_5/pl-dircopy_7/pl-fshack_41/data/sub-01',
493
+ 'berth anchor ~/uploads/weights',
494
+ 'berth anchor /PUBLIC/atlas/weights atlas-weights',
495
+ 'berth anchor ~/uploads/weights --refresh',
496
+ 'berth close',
497
+ 'berth close --title "sub-01 segmentation"',
498
+ 'berth close --infeed sub-01',
499
+ 'berth close --newfeed --name "unet weights"',
500
+ 'berth drop sub-01',
501
+ 'berth clear',
502
+ ],
503
+ },
504
+ // A berth's anchors are the berth's own disk: anchoring reads CUBE and
505
+ // writes there, and changes no piece of the session.
506
+ holds: [],
507
+ handler: berth_run,
508
+ });
435
509
  /**
436
- * `berth [anchor … | close … | drop <name> | clear]`: the anchors of this session's berth, and its close.
510
+ * `berth` over words already split: the declaration's parse and handler.
437
511
  *
438
512
  * @param args - The words after `berth`.
439
513
  * @returns The answer, or a refusal in POSIX tone.
@@ -445,27 +519,6 @@ async function clear_run(args) {
445
519
  * ```
446
520
  */
447
521
  export async function builtin_berth(args) {
448
- const [subcommand, ...rest] = args;
449
- try {
450
- if (subcommand === undefined)
451
- return berth_list();
452
- if (subcommand === 'anchor')
453
- return await anchor_run(rest);
454
- if (subcommand === 'drop')
455
- return drop_run(rest);
456
- if (subcommand === 'clear')
457
- return await clear_run(rest);
458
- if (subcommand === 'close')
459
- return await close_run(places_require('close'), rest);
460
- if (berthPlaces_read() === null)
461
- return berth_refuse(`${subcommand}: this session runs on the host, not in a berth`);
462
- return berth_refuse(`${subcommand}: unknown subcommand; usage: ${BERTH_USAGE}`);
463
- }
464
- catch (error) {
465
- if (error instanceof BerthRefusal)
466
- return berth_refuse(error.message);
467
- const reason = error instanceof Error ? error.message : String(error);
468
- return berth_refuse(subcommand === undefined ? reason : `${subcommand}: ${reason}`);
469
- }
522
+ return declaredCommand_run(berthCommand, args);
470
523
  }
471
524
  //# sourceMappingURL=berth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"berth.js","sourceRoot":"","sources":["../../../src/builtins/berth/berth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"berth.js","sourceRoot":"","sources":["../../../src/builtins/berth/berth.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,42 @@
1
1
  import { type CommandEnvelope } from '@fnndsc/menu';
2
2
  import { type BerthPlaces } from './berthState.js';
3
- /** The subcommand's usage line. */
4
- export declare const CLOSE_USAGE: string;
5
3
  /** The registered ds plugin the work's node runs: it copies its `dir` and does nothing else. */
6
4
  export declare const WORK_PLUGIN: string;
7
5
  /** The work node's title unless one is given. */
8
6
  export declare const WORK_TITLE: string;
7
+ /**
8
+ * What `berth close` was asked: its options, as the declaration's parse
9
+ * gave them (berth.ts).
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const request: CloseRequest = { infeed: null, newfeed: true, name: 'seg run', title: WORK_TITLE, force: false };
14
+ * ```
15
+ */
16
+ export interface CloseRequest {
17
+ /** The anchor whose node the work is a child of (`--infeed`); null when not given. */
18
+ readonly infeed: string | null;
19
+ /** A new feed whatever the anchors (`--newfeed`). */
20
+ readonly newfeed: boolean;
21
+ /** The new feed's name (`--name`); null when not given. */
22
+ readonly name: string | null;
23
+ /** The work node's title. */
24
+ readonly title: string;
25
+ /** Answer the running-process question yes (`--force`). */
26
+ readonly force: boolean;
27
+ }
9
28
  /**
10
29
  * `berth close [--infeed <anchor> | --newfeed] [--name <feed>] [--title <text>] [--force]`:
11
30
  * returns the outgoing folder to ChRIS as one node.
12
31
  *
13
32
  * @param places - The berth's places.
14
- * @param args - The words after `close`.
33
+ * @param request - Its options.
15
34
  * @returns Where the work went and its files folder, or that nothing closed.
16
- * @throws {BerthRefusal} For an empty outgoing folder, a placement the anchors do not decide, and an upload that fails.
35
+ * @throws {BerthRefusal} For `--infeed` with `--newfeed`, an empty outgoing folder, a placement the anchors do not decide, and an upload that fails.
17
36
  *
18
37
  * @example
19
38
  * ```ts
20
- * await close_run({ anchors: '/anchors', outgoing: '/outgoing' }, ['--newfeed', '--name', 'seg run']);
39
+ * await close_run({ anchors: '/anchors', outgoing: '/outgoing' }, { infeed: null, newfeed: true, name: 'seg run', title: WORK_TITLE, force: false });
21
40
  * ```
22
41
  */
23
- export declare function close_run(places: BerthPlaces, args: readonly string[]): Promise<CommandEnvelope>;
42
+ export declare function close_run(places: BerthPlaces, request: CloseRequest): Promise<CommandEnvelope>;
@@ -21,12 +21,12 @@
21
21
  *
22
22
  * Key components:
23
23
  * - close_run: the subcommand.
24
- * - CLOSE_USAGE: its usage line.
24
+ * - CloseRequest: what it was asked.
25
25
  * - WORK_PLUGIN, WORK_TITLE: the plugin the work's node runs, and the node's title unless one is given.
26
26
  *
27
27
  * Typical usage:
28
28
  * ```ts
29
- * await close_run(places, ['--title', 'seg run']);
29
+ * await close_run(places, { infeed: null, newfeed: false, name: null, title: 'seg run', force: false });
30
30
  * ```
31
31
  *
32
32
  * Dependencies: the berth's places and state (berthState.ts); ChRIS through
@@ -50,8 +50,6 @@ import { processesOwn_list } from './berthProcesses.js';
50
50
  import { anchorChanges_any, anchorChanges_compare, BERTH_RECORD_FILE, berthRecord_write, berthSource_read, } from './berthRecord.js';
51
51
  import { berthState_read, berthState_update } from './berthState.js';
52
52
  import { anchorNode_show, BerthRefusal, count_say, columns_render } from './berthWords.js';
53
- /** The subcommand's usage line. */
54
- export const CLOSE_USAGE = 'berth close [--infeed <anchor> | --newfeed] [--name <feed>] [--title <text>] [--force]';
55
53
  /** The registered ds plugin the work's node runs: it copies its `dir` and does nothing else. */
56
54
  export const WORK_PLUGIN = 'pl-dsdircopy';
57
55
  /** The work node's title unless one is given. */
@@ -60,61 +58,6 @@ export const WORK_TITLE = 'berth work';
60
58
  const BERTH_IMAGE_ENV = 'MISE_BERTH_IMAGE';
61
59
  /** The folder under the person's home the work is uploaded into, one folder per close. */
62
60
  const BERTH_FILES_FOLDER = 'berth';
63
- /** The options that take a value. */
64
- const VALUE_OPTIONS = new Set(['--infeed', '--name', '--title']);
65
- /**
66
- * Reads the option words of a close: `--opt value` and `--opt=value` alike.
67
- *
68
- * @param args - The words after `close`.
69
- * @returns The options in order.
70
- * @throws {BerthRefusal} For an operand, an unknown option, or an option missing its value.
71
- */
72
- function closeWords_read(args) {
73
- const words = [];
74
- for (let at = 0; at < args.length; at += 1) {
75
- const arg = args[at];
76
- const equals = arg.indexOf('=');
77
- const option = arg.startsWith('--') && equals !== -1 ? arg.slice(0, equals) : arg;
78
- if (VALUE_OPTIONS.has(option)) {
79
- const value = equals !== -1 && arg.startsWith('--') ? arg.slice(equals + 1) : args[(at += 1)];
80
- if (value === undefined || value === '')
81
- throw new BerthRefusal(`close: ${option} wants a value; ${CLOSE_USAGE}`);
82
- words.push({ option, value });
83
- }
84
- else if (arg === '--newfeed' || arg === '--force' || arg === '-f') {
85
- words.push({ option: arg === '-f' ? '--force' : arg, value: null });
86
- }
87
- else if (arg.startsWith('-')) {
88
- throw new BerthRefusal(`close: unknown option ${arg}; ${CLOSE_USAGE}`);
89
- }
90
- else {
91
- throw new BerthRefusal(`close: takes no operand (${arg}); ${CLOSE_USAGE}`);
92
- }
93
- }
94
- return words;
95
- }
96
- /**
97
- * Reads `berth close`'s words.
98
- *
99
- * @param args - The words after `close`.
100
- * @returns The request.
101
- * @throws {BerthRefusal} As {@link closeWords_read} does, and for `--infeed` with `--newfeed`.
102
- */
103
- function closeRequest_parse(args) {
104
- const words = closeWords_read(args);
105
- const last = (option) => words.filter((word) => word.option === option).at(-1)?.value ?? null;
106
- const has = (option) => words.some((word) => word.option === option);
107
- const request = {
108
- infeed: last('--infeed'),
109
- newfeed: has('--newfeed'),
110
- name: last('--name'),
111
- title: last('--title') ?? WORK_TITLE,
112
- force: has('--force'),
113
- };
114
- if (request.infeed !== null && request.newfeed)
115
- throw new BerthRefusal('close: --infeed and --newfeed are two places; give one');
116
- return request;
117
- }
118
61
  /**
119
62
  * The files of the outgoing folder that are work: every file under it but
120
63
  * the record a close writes at its top.
@@ -418,17 +361,18 @@ function closeRecord_build(places, who, anchors, folder, placement, title) {
418
361
  * returns the outgoing folder to ChRIS as one node.
419
362
  *
420
363
  * @param places - The berth's places.
421
- * @param args - The words after `close`.
364
+ * @param request - Its options.
422
365
  * @returns Where the work went and its files folder, or that nothing closed.
423
- * @throws {BerthRefusal} For an empty outgoing folder, a placement the anchors do not decide, and an upload that fails.
366
+ * @throws {BerthRefusal} For `--infeed` with `--newfeed`, an empty outgoing folder, a placement the anchors do not decide, and an upload that fails.
424
367
  *
425
368
  * @example
426
369
  * ```ts
427
- * await close_run({ anchors: '/anchors', outgoing: '/outgoing' }, ['--newfeed', '--name', 'seg run']);
370
+ * await close_run({ anchors: '/anchors', outgoing: '/outgoing' }, { infeed: null, newfeed: true, name: 'seg run', title: WORK_TITLE, force: false });
428
371
  * ```
429
372
  */
430
- export async function close_run(places, args) {
431
- const request = closeRequest_parse(args);
373
+ export async function close_run(places, request) {
374
+ if (request.infeed !== null && request.newfeed)
375
+ throw new BerthRefusal('close: --infeed and --newfeed are two places; give one');
432
376
  const work = outgoingFiles_list(places.outgoing);
433
377
  if (work.length === 0)
434
378
  throw new BerthRefusal(`close: ${places.outgoing} is empty; nothing to close`);