@fnndsc/brasa 0.9.2 → 0.10.1

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 (170) hide show
  1. package/dist/buildinfo.json +1 -0
  2. package/dist/builtins/argumentTokens.d.ts +18 -0
  3. package/dist/builtins/argumentTokens.js +58 -0
  4. package/dist/builtins/argumentTokens.js.map +1 -0
  5. package/dist/builtins/executable.d.ts +3 -7
  6. package/dist/builtins/executable.js +32 -29
  7. package/dist/builtins/executable.js.map +1 -1
  8. package/dist/builtins/feedCreation.d.ts +23 -0
  9. package/dist/builtins/feedCreation.js +45 -0
  10. package/dist/builtins/feedCreation.js.map +1 -0
  11. package/dist/builtins/fs/cat.args.d.ts +36 -0
  12. package/dist/builtins/fs/cat.args.js +63 -0
  13. package/dist/builtins/fs/cat.args.js.map +1 -0
  14. package/dist/builtins/fs/cat.d.ts +2 -2
  15. package/dist/builtins/fs/cat.js +222 -101
  16. package/dist/builtins/fs/cat.js.map +1 -1
  17. package/dist/builtins/fs/cd.js +41 -5
  18. package/dist/builtins/fs/cd.js.map +1 -1
  19. package/dist/builtins/fs/cp.js +3 -2
  20. package/dist/builtins/fs/cp.js.map +1 -1
  21. package/dist/builtins/fs/download.d.ts +1 -1
  22. package/dist/builtins/fs/download.js +52 -13
  23. package/dist/builtins/fs/download.js.map +1 -1
  24. package/dist/builtins/fs/du.js +15 -1
  25. package/dist/builtins/fs/du.js.map +1 -1
  26. package/dist/builtins/fs/ls.js +10 -1
  27. package/dist/builtins/fs/ls.js.map +1 -1
  28. package/dist/builtins/fs/mv.js +7 -3
  29. package/dist/builtins/fs/mv.js.map +1 -1
  30. package/dist/builtins/fs/pull.args.d.ts +14 -1
  31. package/dist/builtins/fs/pull.args.js +72 -9
  32. package/dist/builtins/fs/pull.args.js.map +1 -1
  33. package/dist/builtins/fs/pull.d.ts +1 -0
  34. package/dist/builtins/fs/pull.js +191 -259
  35. package/dist/builtins/fs/pull.js.map +1 -1
  36. package/dist/builtins/fs/rm.js +4 -0
  37. package/dist/builtins/fs/rm.js.map +1 -1
  38. package/dist/builtins/fs/tree.js +7 -3
  39. package/dist/builtins/fs/tree.js.map +1 -1
  40. package/dist/builtins/fs/upload.js +29 -2
  41. package/dist/builtins/fs/upload.js.map +1 -1
  42. package/dist/builtins/help.d.ts +7 -0
  43. package/dist/builtins/help.js +144 -36
  44. package/dist/builtins/help.js.map +1 -1
  45. package/dist/builtins/index.d.ts +1 -0
  46. package/dist/builtins/index.js +1 -0
  47. package/dist/builtins/index.js.map +1 -1
  48. package/dist/builtins/net/cubepath.js +1 -2
  49. package/dist/builtins/net/cubepath.js.map +1 -1
  50. package/dist/builtins/net/pacs.d.ts +1 -0
  51. package/dist/builtins/net/pacs.js +5 -1
  52. package/dist/builtins/net/pacs.js.map +1 -1
  53. package/dist/builtins/net/pacsUtils.d.ts +4 -23
  54. package/dist/builtins/net/pacsUtils.js +11 -32
  55. package/dist/builtins/net/pacsUtils.js.map +1 -1
  56. package/dist/builtins/net/query.js +4 -1
  57. package/dist/builtins/net/query.js.map +1 -1
  58. package/dist/builtins/net/status.d.ts +14 -0
  59. package/dist/builtins/net/status.js +210 -0
  60. package/dist/builtins/net/status.js.map +1 -0
  61. package/dist/builtins/pluginExecute.d.ts +3 -2
  62. package/dist/builtins/pluginExecute.js +41 -70
  63. package/dist/builtins/pluginExecute.js.map +1 -1
  64. package/dist/builtins/pluginSelector.d.ts +15 -0
  65. package/dist/builtins/pluginSelector.js +21 -0
  66. package/dist/builtins/pluginSelector.js.map +1 -0
  67. package/dist/builtins/proc.js +106 -4
  68. package/dist/builtins/proc.js.map +1 -1
  69. package/dist/builtins/res/compute.js +8 -3
  70. package/dist/builtins/res/compute.js.map +1 -1
  71. package/dist/builtins/res/feed.js +3 -3
  72. package/dist/builtins/res/feed.js.map +1 -1
  73. package/dist/builtins/res/files.js +2 -2
  74. package/dist/builtins/res/files.js.map +1 -1
  75. package/dist/builtins/res/group.d.ts +1 -1
  76. package/dist/builtins/res/group.js +124 -7
  77. package/dist/builtins/res/group.js.map +1 -1
  78. package/dist/builtins/res/pipeline.args.d.ts +4 -0
  79. package/dist/builtins/res/pipeline.args.js +63 -12
  80. package/dist/builtins/res/pipeline.args.js.map +1 -1
  81. package/dist/builtins/res/pipeline.d.ts +3 -1
  82. package/dist/builtins/res/pipeline.js +155 -60
  83. package/dist/builtins/res/pipeline.js.map +1 -1
  84. package/dist/builtins/res/pipeline.manifest.d.ts +15 -0
  85. package/dist/builtins/res/pipeline.manifest.js +93 -0
  86. package/dist/builtins/res/pipeline.manifest.js.map +1 -0
  87. package/dist/builtins/res/plugin.js +16 -9
  88. package/dist/builtins/res/plugin.js.map +1 -1
  89. package/dist/builtins/res/plugininstance.js +2 -2
  90. package/dist/builtins/res/plugininstance.js.map +1 -1
  91. package/dist/builtins/res/pluginmeta.js +2 -2
  92. package/dist/builtins/res/pluginmeta.js.map +1 -1
  93. package/dist/builtins/res/tag.js +2 -2
  94. package/dist/builtins/res/tag.js.map +1 -1
  95. package/dist/builtins/res/user.d.ts +8 -0
  96. package/dist/builtins/res/user.js +87 -0
  97. package/dist/builtins/res/user.js.map +1 -0
  98. package/dist/builtins/res/workflow.js +2 -2
  99. package/dist/builtins/res/workflow.js.map +1 -1
  100. package/dist/builtins/store.js +24 -3
  101. package/dist/builtins/store.js.map +1 -1
  102. package/dist/builtins/sys/fortune.d.ts +9 -0
  103. package/dist/builtins/sys/fortune.js +16 -1
  104. package/dist/builtins/sys/fortune.js.map +1 -1
  105. package/dist/builtins/sys/whoami.d.ts +13 -1
  106. package/dist/builtins/sys/whoami.js +47 -2
  107. package/dist/builtins/sys/whoami.js.map +1 -1
  108. package/dist/builtins/utils.d.ts +25 -1
  109. package/dist/builtins/utils.js +30 -3
  110. package/dist/builtins/utils.js.map +1 -1
  111. package/dist/builtins/wildcard.d.ts +31 -0
  112. package/dist/builtins/wildcard.js +114 -51
  113. package/dist/builtins/wildcard.js.map +1 -1
  114. package/dist/command-keys.js +2 -1
  115. package/dist/command-keys.js.map +1 -1
  116. package/dist/core/cancellation.d.ts +28 -0
  117. package/dist/core/cancellation.js +70 -0
  118. package/dist/core/cancellation.js.map +1 -0
  119. package/dist/core/dispatch.d.ts +1 -8
  120. package/dist/core/dispatch.js +82 -82
  121. package/dist/core/dispatch.js.map +1 -1
  122. package/dist/core/elevation.d.ts +35 -0
  123. package/dist/core/elevation.js +77 -0
  124. package/dist/core/elevation.js.map +1 -0
  125. package/dist/core/engine.d.ts +12 -0
  126. package/dist/core/engine.js +35 -8
  127. package/dist/core/engine.js.map +1 -1
  128. package/dist/core/preprocess.d.ts +11 -4
  129. package/dist/core/preprocess.js +43 -10
  130. package/dist/core/preprocess.js.map +1 -1
  131. package/dist/core/progress.d.ts +15 -5
  132. package/dist/core/progress.js +14 -0
  133. package/dist/core/progress.js.map +1 -1
  134. package/dist/core/promptContext.d.ts +3 -5
  135. package/dist/core/promptContext.js +9 -2
  136. package/dist/core/promptContext.js.map +1 -1
  137. package/dist/core/sink.d.ts +9 -0
  138. package/dist/core/sink.js +23 -3
  139. package/dist/core/sink.js.map +1 -1
  140. package/dist/core/surface.d.ts +14 -0
  141. package/dist/core/surface.js +5 -0
  142. package/dist/core/surface.js.map +1 -1
  143. package/dist/core/version.d.ts +34 -0
  144. package/dist/core/version.js +51 -0
  145. package/dist/core/version.js.map +1 -1
  146. package/dist/index.d.ts +1 -0
  147. package/dist/index.js +1 -0
  148. package/dist/index.js.map +1 -1
  149. package/dist/lib/completer/index.js +41 -2
  150. package/dist/lib/completer/index.js.map +1 -1
  151. package/dist/lib/parser.d.ts +75 -2
  152. package/dist/lib/parser.js +158 -15
  153. package/dist/lib/parser.js.map +1 -1
  154. package/dist/lib/vfs/listing.d.ts +22 -0
  155. package/dist/lib/vfs/listing.js +14 -0
  156. package/dist/lib/vfs/listing.js.map +1 -0
  157. package/dist/lib/vfs/providers/binEntry.d.ts +20 -0
  158. package/dist/lib/vfs/providers/binEntry.js +47 -0
  159. package/dist/lib/vfs/providers/binEntry.js.map +1 -0
  160. package/dist/lib/vfs/providers/static.js +1 -0
  161. package/dist/lib/vfs/providers/static.js.map +1 -1
  162. package/dist/lib/vfs/providers/static_content.js +7 -38
  163. package/dist/lib/vfs/providers/static_content.js.map +1 -1
  164. package/dist/lib/vfs/vfs.d.ts +7 -0
  165. package/dist/lib/vfs/vfs.js +28 -2
  166. package/dist/lib/vfs/vfs.js.map +1 -1
  167. package/dist/session/index.d.ts +18 -0
  168. package/dist/session/index.js +29 -1
  169. package/dist/session/index.js.map +1 -1
  170. package/package.json +10 -5
@@ -2,33 +2,72 @@
2
2
  * @file Builtin download command.
3
3
  * Downloads files from ChRIS to the local filesystem with progress.
4
4
  */
5
- import chalk from 'chalk';
6
5
  import path from 'path';
7
- import { path_resolve } from '../utils.js';
8
- import { files_downloadWithProgress as chefs_download_cmd, bytes_format } from '@fnndsc/chili/commands/fs/download.js';
9
- import { sink_get } from '../../core/sink.js';
6
+ import chalk from 'chalk';
7
+ import { files_downloadWithProgress as chefs_download_cmd, files_downloadManyWithProgress as chefs_downloadMany_cmd, bytes_format } from '@fnndsc/chili/commands/fs/download.js';
10
8
  import { envelope_ok, envelope_error } from '@fnndsc/cumin';
9
+ import { sink_get } from '../../core/sink.js';
10
+ import { shellArguments_pathnameExpanded } from '../../lib/parser.js';
11
+ import { path_resolve } from '../utils.js';
12
+ import { surface_get } from '../../core/surface.js';
13
+ /**
14
+ * Asks the issuing surface to confirm a local download overwrite or merge.
15
+ *
16
+ * @param message - Confirmation question prepared by the transfer command.
17
+ * @returns Nothing when the surface accepts the operation.
18
+ * @throws {Error} When the surface declines the operation.
19
+ */
20
+ async function downloadConfirmation_request(message) {
21
+ const answer = await surface_get().prompt({ message });
22
+ if (answer.trim().toLowerCase() !== 'y' && answer.trim().toLowerCase() !== 'yes') {
23
+ throw new Error('Operation cancelled by user.');
24
+ }
25
+ }
11
26
  /**
12
27
  * Downloads a remote ChRIS file or directory to the local filesystem.
13
28
  *
14
- * @param args - [remotePath, localPath] plus optional -f/--force to overwrite.
29
+ * @param args - [remotePathOrGlob, localPath] plus optional -f/--force to overwrite.
15
30
  * @returns An envelope carrying the download summary.
16
31
  */
17
32
  export async function builtin_download(args) {
18
33
  const force = args.includes('-f') || args.includes('--force');
19
- const cleanArgs = args.filter(arg => arg !== '-f' && arg !== '--force');
34
+ const positionalIndexes = args.reduce((indexes, arg, index) => {
35
+ if (arg !== '-f' && arg !== '--force')
36
+ indexes.push(index);
37
+ return indexes;
38
+ }, []);
39
+ const cleanArgs = positionalIndexes.map((index) => args[index]);
20
40
  if (cleanArgs.length < 2) {
21
- return envelope_ok(`${chalk.red('Usage: download <remote_path> <local_path> [-f|--force]')}\n`);
41
+ return envelope_ok(`${chalk.red('Usage: download <remote_path_or_glob> <local_path> [-f|--force]')}\n`);
22
42
  }
23
- const remotePathArg = cleanArgs[0];
24
- const localPathArg = cleanArgs[1];
25
- const targetRemote = await path_resolve(remotePathArg);
43
+ const localPathArg = cleanArgs[cleanArgs.length - 1];
44
+ const sourceArgs = cleanArgs.slice(0, -1);
45
+ const sourceWasExpanded = positionalIndexes
46
+ .slice(0, -1)
47
+ .some((index) => shellArguments_pathnameExpanded(args, index));
26
48
  const targetLocal = path.resolve(localPathArg);
27
49
  try {
28
- const summary = await chefs_download_cmd(targetRemote, targetLocal, {
50
+ const progress = {
29
51
  force,
30
- onProgress: event => sink_get().progress_write(event),
31
- });
52
+ confirm: downloadConfirmation_request,
53
+ onNotice: (message, channel) => {
54
+ const sink = sink_get();
55
+ if (channel === 'status')
56
+ sink.status_write(`${message}\n`);
57
+ else
58
+ sink.err_write(`${message}\n`);
59
+ },
60
+ onProgress: (event) => sink_get().progress_write(event),
61
+ };
62
+ let summary;
63
+ if (!sourceWasExpanded) {
64
+ const targetRemote = await path_resolve(sourceArgs[0]);
65
+ summary = await chefs_download_cmd(targetRemote, targetLocal, progress);
66
+ }
67
+ else {
68
+ const sources = await Promise.all(sourceArgs.map(path_resolve));
69
+ summary = await chefs_downloadMany_cmd(sources, targetLocal, progress);
70
+ }
32
71
  let rendered = '\n';
33
72
  if (summary.failedCount === 0) {
34
73
  rendered += `${chalk.green(`✓ Successfully downloaded ${summary.transferredCount} file(s)`)}\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/builtins/fs/download.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,0BAA0B,IAAI,kBAAkB,EAEhD,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAwB,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAElF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,KAAK,GAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,SAAS,GAAa,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC;IAElF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,IAAI,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAW,SAAS,CAAC,CAAC,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAW,MAAM,YAAY,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAW,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,OAAO,GAAoB,MAAM,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE;YACnF,KAAK;YACL,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC9B,QAAQ,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,OAAO,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC;QAClG,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,OAAO,CAAC,gBAAgB,aAAa,OAAO,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC;QACrH,CAAC;QACD,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACtJ,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/builtins/fs/download.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,13 @@ import { commandArgs_process, path_resolve } from '../utils.js';
8
8
  import { session } from '../../session/index.js';
9
9
  import { vfs } from '../../lib/vfs/vfs.js';
10
10
  import { spinner } from '../../lib/spinner.js';
11
+ import { commandCancellation_enable, commandCancellation_signalGet } from '../../core/cancellation.js';
11
12
  import { scan_do } from '@fnndsc/chili/path/pathCommand.js';
12
13
  import { bytes_format } from '@fnndsc/chili/commands/fs/upload.js';
14
+ /** Long `du` flags that never accept a separate value. */
15
+ const DU_BOOLEAN_LONG_OPTIONS = [
16
+ 'human-readable', 'summarize', 'all', 'total', 'separate-dirs',
17
+ ];
13
18
  /**
14
19
  * Formats a byte count for `du` output: human-readable string or KB integer,
15
20
  * right-padded to 12 characters for column alignment.
@@ -155,9 +160,11 @@ function dirUsage_render(dirSizes, targetPath, opts) {
155
160
  * ```
156
161
  */
157
162
  export async function builtin_du(args) {
158
- const parsed = commandArgs_process(args);
163
+ const parsed = commandArgs_process(args, { booleanLongOptions: DU_BOOLEAN_LONG_OPTIONS });
159
164
  const opts = duOptions_parse(parsed);
160
165
  const pathArgs = parsed._;
166
+ commandCancellation_enable();
167
+ const signal = commandCancellation_signalGet();
161
168
  const originalFolder = await session.getCWD();
162
169
  const rawTargets = pathArgs.length > 0 ? pathArgs : ['.'];
163
170
  const resolvedTargets = [];
@@ -169,6 +176,9 @@ export async function builtin_du(args) {
169
176
  let errOut = '';
170
177
  try {
171
178
  for (const targetPath of resolvedTargets) {
179
+ if (signal?.aborted) {
180
+ return { status: 'error', rendered: '', renderedErr: 'du: cancelled\n' };
181
+ }
172
182
  const argLabel = path.basename(targetPath);
173
183
  spinner.start(`Scanning ${argLabel}...`);
174
184
  const stat = await targetStat_resolve(targetPath);
@@ -189,9 +199,13 @@ export async function builtin_du(args) {
189
199
  tree: false,
190
200
  follow: false,
191
201
  dirsOnly: false,
202
+ signal,
192
203
  };
193
204
  const scanResult = await scan_do(scanOptions);
194
205
  await session.setCWD(originalFolder);
206
+ if (signal?.aborted) {
207
+ return { status: 'error', rendered: '', renderedErr: 'du: cancelled\n' };
208
+ }
195
209
  if (!scanResult) {
196
210
  spinner.stop();
197
211
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"du.js","sourceRoot":"","sources":["../../../src/builtins/fs/du.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"du.js","sourceRoot":"","sources":["../../../src/builtins/fs/du.ts"],"names":[],"mappings":"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"}
@@ -63,14 +63,23 @@ export async function builtin_ls(args) {
63
63
  targets.push(await path_resolve(pathArg));
64
64
  }
65
65
  }
66
+ let anyFailed = false;
66
67
  for (const target of targets) {
67
68
  const envelope = await vfs.list(target, options);
68
69
  rendered += envelope.rendered;
69
70
  if (envelope.renderedErr !== undefined) {
70
71
  renderedErr += envelope.renderedErr;
71
72
  }
73
+ if (envelope.status === 'error') {
74
+ anyFailed = true;
75
+ }
76
+ }
77
+ // A failed listing is a failed command: aggregating error envelopes into an
78
+ // ok status would let `ls missing-dir` exit 0.
79
+ if (anyFailed) {
80
+ process.exitCode = 1;
72
81
  }
73
- const result = { status: 'ok', rendered };
82
+ const result = { status: anyFailed ? 'error' : 'ok', rendered };
74
83
  if (renderedErr.length > 0) {
75
84
  result.renderedErr = renderedErr;
76
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/builtins/fs/ls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/builtins/fs/ls.ts"],"names":[],"mappings":"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"}
@@ -49,9 +49,12 @@ export async function builtin_mv(args) {
49
49
  outcomes.push({ source: srcPath, moved: success });
50
50
  if (success) {
51
51
  successCount++;
52
- // Invalidate source directory
52
+ // Invalidate the source's parent AND the moved subtree: listings
53
+ // cached beneath the old path would otherwise serve the vanished
54
+ // tree until their TTL expires.
53
55
  const srcDir = path.posix.dirname(srcPath);
54
56
  listCache.cache_invalidate(srcDir);
57
+ listCache.cache_invalidateTree(srcPath);
55
58
  }
56
59
  else {
57
60
  failCount++;
@@ -64,8 +67,9 @@ export async function builtin_mv(args) {
64
67
  failCount++;
65
68
  }
66
69
  }
67
- // Invalidate destination directory (always, since files moved into it)
68
- listCache.cache_invalidate(destPath);
70
+ // Invalidate the destination subtree (a moved directory replaces whatever
71
+ // listings were cached beneath it) and its parent.
72
+ listCache.cache_invalidateTree(destPath);
69
73
  const destParent = path.posix.dirname(destPath);
70
74
  listCache.cache_invalidate(destParent);
71
75
  // Summary for multiple files
@@ -1 +1 @@
1
- {"version":3,"file":"mv.js","sourceRoot":"","sources":["../../../src/builtins/fs/mv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mv.js","sourceRoot":"","sources":["../../../src/builtins/fs/mv.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,23 @@
11
11
  export interface PullArgs {
12
12
  nowait: boolean;
13
13
  retryMax: number;
14
+ newFeedTitle: string | null;
15
+ parseError: string | null;
14
16
  paths: string[];
17
+ attachment?: PullAttachment;
18
+ }
19
+ /** One plugin or pipeline requested after successful PACS Feed creation. */
20
+ export interface PullAttachment {
21
+ /** Selected executable kind. */
22
+ kind: 'plugin' | 'pipeline';
23
+ /** Plugin or Pipeline selector supplied by the user. */
24
+ selector: string;
25
+ /** Already-tokenized payload supplied after `--`. */
26
+ args: string[];
15
27
  }
16
28
  /**
17
- * Parses `pull` arguments: the `--nowait` flag, `--retry N`, and path operands.
29
+ * Parses `pull` arguments: `--nowait`, `--retry N`, `--new-feed TITLE`, and
30
+ * path operands.
18
31
  *
19
32
  * @param args - Raw command arguments.
20
33
  * @returns The parsed flags and paths.
@@ -6,25 +6,88 @@
6
6
  * @module
7
7
  */
8
8
  /**
9
- * Parses `pull` arguments: the `--nowait` flag, `--retry N`, and path operands.
9
+ * Parses `pull` arguments: `--nowait`, `--retry N`, `--new-feed TITLE`, and
10
+ * path operands.
10
11
  *
11
12
  * @param args - Raw command arguments.
12
13
  * @returns The parsed flags and paths.
13
14
  */
14
15
  export function pullArgs_parse(args) {
15
- const nowait = args.includes('--nowait');
16
+ const delimiterIndex = args.indexOf('--');
17
+ const commandArgs = delimiterIndex === -1 ? args : args.slice(0, delimiterIndex);
18
+ const forwardedArgs = delimiterIndex === -1 ? [] : args.slice(delimiterIndex + 1);
19
+ const nowait = commandArgs.includes('--nowait');
16
20
  let retryMax = 0;
21
+ let newFeedTitle = null;
22
+ let parseError = null;
17
23
  const paths = [];
18
- for (let i = 0; i < args.length; i++) {
19
- if (args[i] === '--retry' && i + 1 < args.length) {
20
- const n = parseInt(args[++i], 10);
21
- if (!isNaN(n) && n >= 0)
24
+ let attachment;
25
+ for (let i = 0; i < commandArgs.length; i++) {
26
+ if (commandArgs[i] === '--nowait') {
27
+ continue;
28
+ }
29
+ else if (commandArgs[i] === '--retry') {
30
+ const value = commandArgs[i + 1];
31
+ if (value === undefined || value.startsWith('--')) {
32
+ parseError ??= '--retry requires a non-negative integer';
33
+ continue;
34
+ }
35
+ i++;
36
+ const n = Number(value);
37
+ if (Number.isInteger(n) && n >= 0) {
22
38
  retryMax = n;
39
+ }
40
+ else {
41
+ parseError ??= '--retry requires a non-negative integer';
42
+ }
43
+ }
44
+ else if (commandArgs[i] === '--new-feed') {
45
+ if (newFeedTitle !== null) {
46
+ parseError = '--new-feed may only be specified once';
47
+ }
48
+ const title = commandArgs[i + 1];
49
+ if (title === undefined || title.startsWith('--') || title.trim().length === 0) {
50
+ parseError ??= '--new-feed requires a title';
51
+ }
52
+ else {
53
+ newFeedTitle = title.trim();
54
+ i++;
55
+ }
56
+ }
57
+ else if (commandArgs[i] === '--plugin' || commandArgs[i] === '--pipeline') {
58
+ const flag = commandArgs[i];
59
+ const selector = commandArgs[i + 1];
60
+ if (attachment !== undefined) {
61
+ parseError = '--plugin and --pipeline are mutually exclusive';
62
+ }
63
+ else if (selector === undefined || selector.startsWith('--')) {
64
+ parseError ??= `${flag} requires a selector`;
65
+ }
66
+ else {
67
+ attachment = {
68
+ kind: flag === '--plugin' ? 'plugin' : 'pipeline',
69
+ selector,
70
+ args: forwardedArgs,
71
+ };
72
+ i++;
73
+ }
23
74
  }
24
- else if (!args[i].startsWith('--')) {
25
- paths.push(args[i]);
75
+ else if (commandArgs[i].startsWith('--')) {
76
+ parseError ??= `unsupported option: ${commandArgs[i]}`;
26
77
  }
78
+ else {
79
+ paths.push(commandArgs[i]);
80
+ }
81
+ }
82
+ if (attachment !== undefined && newFeedTitle === null) {
83
+ parseError ??= `--${attachment.kind} requires --new-feed`;
84
+ }
85
+ if (attachment === undefined && forwardedArgs.length > 0) {
86
+ parseError ??= 'arguments after -- require --plugin or --pipeline';
27
87
  }
28
- return { nowait, retryMax, paths };
88
+ const parsed = { nowait, retryMax, newFeedTitle, parseError, paths };
89
+ if (attachment !== undefined)
90
+ parsed.attachment = attachment;
91
+ return parsed;
29
92
  }
30
93
  //# sourceMappingURL=pull.args.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pull.args.js","sourceRoot":"","sources":["../../../src/builtins/fs/pull.args.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,MAAM,GAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAW,CAAC,CAAC;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,CAAC,GAAW,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,QAAQ,GAAG,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"pull.args.js","sourceRoot":"","sources":["../../../src/builtins/fs/pull.args.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ import { type CommandEnvelope } from '@fnndsc/cumin';
18
18
  * exits non-zero on partial failure.
19
19
  * With `--nowait`: fires retrieves and prints `<seriesUID> <retrieveId>` per line, then returns.
20
20
  * With `--retry N`: re-fires retrieves for [NO LONK] series up to N additional times.
21
+ * With `--new-feed TITLE`: creates one feed from the exact successfully retrieved set.
21
22
  *
22
23
  * @param args - Command arguments (VFS paths, optional flags).
23
24
  * @example