@fnndsc/brasa 0.50.1 → 0.51.0

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.
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module
8
8
  */
9
- import { plugin_executeInPlace } from '@fnndsc/salsa';
9
+ import { plugin_executeInPlace, plugins_list } from '@fnndsc/salsa';
10
10
  import { procCache_get } from '@fnndsc/cumin';
11
11
  import { envelope_error, envelope_ok } from '@fnndsc/menu';
12
12
  import chalk from 'chalk';
@@ -19,6 +19,23 @@ import { pluginSelector_normalize } from './pluginSelector.js';
19
19
  import { sink_dataLine, sink_errLine } from '../core/sink.js';
20
20
  import { errorStack } from '@fnndsc/fond';
21
21
  import { exitCode_set } from '../core/handlerRun.js';
22
+ import { path_resolve } from '../core/paths.js';
23
+ import { OperandRefusal, operands_read, stage_lines, stage_make, stageMade_lines } from './operands.js';
24
+ /**
25
+ * Reads a plugin's kind from CUBE: `fs`, `ds` or `ts`.
26
+ *
27
+ * @param pluginName - The `/bin` name, `<name>-v<version>`.
28
+ * @returns The kind, or null when CUBE did not say.
29
+ */
30
+ async function pluginKind_read(pluginName) {
31
+ const match = pluginName.match(/^(.+)-v(.+)$/);
32
+ if (match === null)
33
+ return null;
34
+ const listed = await plugins_list({ search: { name_exact: match[1], version: match[2] } });
35
+ const row = listed?.tableData?.[0];
36
+ const kind = row?.['type'];
37
+ return typeof kind === 'string' ? kind : null;
38
+ }
22
39
  /**
23
40
  * Executes a plugin in the current directory context.
24
41
  *
@@ -48,6 +65,57 @@ export async function builtin_executePlugin(pluginName, args, place) {
48
65
  // read. Left in, it would be posted to CUBE as a plugin parameter.
49
66
  const detach = args.includes('--detach');
50
67
  args = args.filter((arg) => arg !== '--detach');
68
+ // 0b. The input operand (operands.ts): a directory replaces cwd; files
69
+ // are shaped into a stage the run roots the feed with; to an fs
70
+ // plugin an operand is its `dir`, untranslated.
71
+ let operandPlace = null;
72
+ let stage = null;
73
+ let operandDir = null;
74
+ if (place === undefined) {
75
+ let operands;
76
+ try {
77
+ operands = await operands_read(args);
78
+ }
79
+ catch (error) {
80
+ if (!(error instanceof OperandRefusal))
81
+ throw error;
82
+ sink_errLine(chalk.red(`${pluginName}: ${error.message}`));
83
+ return envelope_error('');
84
+ }
85
+ args = operands.rest;
86
+ if (operands.directory !== null || operands.subjects.length > 0) {
87
+ const kind = await pluginKind_read(pluginName);
88
+ if (kind === null) {
89
+ sink_errLine(chalk.red(`${pluginName}: could not read the plugin's kind from CUBE, so the operand cannot be placed`));
90
+ return envelope_error('');
91
+ }
92
+ if (kind === 'fs') {
93
+ const named = operands.subjects.find((subject) => subject.named);
94
+ if (named !== undefined) {
95
+ sink_errLine(chalk.red(`${pluginName}: as ${named.name}: an fs plugin takes paths as its dir, not subjects`));
96
+ return envelope_error('');
97
+ }
98
+ operandDir = [...(operands.directory !== null ? [operands.directory] : []), ...operands.subjects.flatMap((subject) => subject.files)].join(',');
99
+ }
100
+ else if (operands.directory !== null) {
101
+ operandPlace = operands.directory;
102
+ }
103
+ else {
104
+ try {
105
+ stage = await stage_make(operands.subjects, await path_resolve('~'));
106
+ }
107
+ catch (error) {
108
+ if (!(error instanceof OperandRefusal))
109
+ throw error;
110
+ sink_errLine(chalk.red(`${pluginName}: ${error.message}`));
111
+ return envelope_error('');
112
+ }
113
+ for (const line of stage_lines(stage))
114
+ sink_dataLine(chalk.cyan(line));
115
+ operandPlace = stage.path;
116
+ }
117
+ }
118
+ }
51
119
  // 1. Split the already-tokenized arguments on the context delimiter.
52
120
  const delimiterIndex = args.indexOf('--');
53
121
  const pluginArgTokens = delimiterIndex === -1 ? args : args.slice(0, delimiterIndex);
@@ -65,6 +133,8 @@ export async function builtin_executePlugin(pluginName, args, place) {
65
133
  return envelope_error('');
66
134
  }
67
135
  }
136
+ if (operandDir !== null)
137
+ pluginParams['dir'] = operandDir;
68
138
  if (contextArgTokens.length > 0) {
69
139
  try {
70
140
  contextParams = executableArguments_parse(contextArgTokens);
@@ -76,11 +146,12 @@ export async function builtin_executePlugin(pluginName, args, place) {
76
146
  }
77
147
  }
78
148
  // 3. Set default context params if not provided
79
- const cwd = place ?? await session.getCWD();
149
+ const cwd = place ?? operandPlace ?? await session.getCWD();
80
150
  const isInFeed = cwd.includes('/feeds/feed_');
81
- // If no context params provided and not in a feed, use directory name as feed title
151
+ // If no context params provided and not in a feed, use directory name as
152
+ // feed title; a stage is named by its subjects, not its id.
82
153
  if (contextArgTokens.length === 0 && !isInFeed) {
83
- const defaultTitle = cwd.split('/').pop() || 'Untitled';
154
+ const defaultTitle = stage !== null ? stage.subjects.map((subject) => subject.name).join(', ') : cwd.split('/').pop() || 'Untitled';
84
155
  contextParams.feed_title = defaultTitle;
85
156
  sink_dataLine(chalk.cyan(`Using feed title: "${defaultTitle}" (customize with -- feed_title="Custom Title")`));
86
157
  }
@@ -143,6 +214,12 @@ export async function builtin_executePlugin(pluginName, args, place) {
143
214
  if (result.feedID) {
144
215
  sink_dataLine(chalk.green(`Feed created: ${result.feedID}`));
145
216
  }
217
+ // What CUBE made of the stage: the real paths, since the data moved.
218
+ if (stage !== null && result.feedID !== undefined && result.dircopyInstanceID !== undefined) {
219
+ const rootOutput = `/home/${cwd.split('/')[2] ?? ''}/feeds/feed_${result.feedID}/pl-dircopy_${result.dircopyInstanceID}/data`;
220
+ for (const line of stageMade_lines(stage, rootOutput))
221
+ sink_dataLine(chalk.cyan(line));
222
+ }
146
223
  const feedIDOfRun = result.feedID !== undefined
147
224
  ? result.feedID
148
225
  : result.parentID !== null ? (procCache_get().instance_get(result.parentID)?.feedID ?? null) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"pluginExecute.js","sourceRoot":"","sources":["../../src/builtins/pluginExecute.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAyB,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAc,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAoB,cAAc,EAAE,WAAW,EAAwB,MAAM,cAAc,CAAC;AACnG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAsB,MAAM,kBAAkB,CAAC;AACrH,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAA6B,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkB,EAClB,IAAc,EACd,KAAc;IAEd,IAAI,CAAC;QACH,uEAAuE;QACvE,wEAAwE;QACxE,qEAAqE;QACrE,sEAAsE;QACtE,MAAM,MAAM,GAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAW,EAAW,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QAEjE,qEAAqE;QACrE,MAAM,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,eAAe,GAAa,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC/F,MAAM,gBAAgB,GAAa,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAE/F,mCAAmC;QACnC,IAAI,YAAY,GAAe,EAAE,CAAC;QAClC,IAAI,aAAa,GAAe,EAAE,CAAC;QAEnC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,YAAY,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/D,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACnE,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,aAAa,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/D,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACpE,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,GAAG,GAAW,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAY,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEvD,oFAAoF;QACpF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;YAChE,aAAa,CAAC,UAAU,GAAG,YAAY,CAAC;YACxC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,YAAY,iDAAiD,CAAC,CAAC,CAAC;QACjH,CAAC;QAED,6CAA6C;QAC7C,MAAM,SAAS,GAA0B,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC3D,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,UAAU,GAAa,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnF,iEAAiE;QACjE,qEAAqE;QACrE,MAAM,kBAAkB,GAAW,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAExE,uBAAuB;QACvB,MAAM,MAAM,GAAiC,MAAM,qBAAqB,CACtE,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,GAAG,EACH,UAAU,CACX,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,yDAAyD;YACzD,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACpD,IAAI,KAAK,GAA6B,UAAU,CAAC,SAAS,EAAE,CAAC;YAC7D,OAAO,KAAK,EAAE,CAAC;gBACb,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChD,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,8DAA8D;QAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1E,iDAAiD;YACjD,MAAM,SAAS,GAAW,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ;gBACpE,CAAC,CAAC,aAAa,CAAC,UAAU;gBAC1B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,gBAAgB,CAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACtC,cAAc,EAAE,MAAM,CAAC,iBAAiB;gBACxC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;aACtE,CAAC,CAAC;YACH,oEAAoE;YACpE,4DAA4D;YAC5D,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpC,4CAA4C;YAC5C,MAAM,MAAM,GAAkB,CAAC,GAAG,EAAE;gBAClC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,CAAC,CAAC,EAAE,CAAC;YACL,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,aAAa,EAAE,CAAC,YAAY,CAAC;oBAC3B,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM;oBACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW;iBAC5F,CAAC,CAAC;gBACH,mEAAmE;gBACnE,mEAAmE;gBACnE,UAAU,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,WAAW,GAAkB,MAAM,CAAC,MAAM,KAAK,SAAS;YAC5D,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,UAAU,SAAS,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAC5F,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAErE,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,MAAM,GAAW,UAAU,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,UAAU,GAAkB,MAAM,iBAAiB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;YACjG,aAAa,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YACzD,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/E,MAAM,GAAG,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxE,CAAC;QACD,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,MAAM,GAAkB,WAAW,CAAC;QAC1C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,WAAW,CAAC,EAAE,EAAE;YACrB,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE;gBACJ,UAAU;gBACV,UAAU,EAAE,MAAM,CAAC,gBAAgB;gBACnC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;gBACpC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM;aACP;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,GAAG,GAAW,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3E,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pluginExecute.js","sourceRoot":"","sources":["../../src/builtins/pluginExecute.ts"],"names":[],"mappings":"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"}
@@ -23,3 +23,37 @@ export interface BinExecutableMatches {
23
23
  * @returns Matching dynamic executable entries, if the listing is available.
24
24
  */
25
25
  export declare function binExecutableMatches_get(command: string): Promise<BinExecutableMatches>;
26
+ /** A bare plugin name resolved to the highest version `/bin` lists for it. */
27
+ export interface BinPluginHighest {
28
+ /** The `/bin` entry that runs: `<name>-v<version>`. */
29
+ executable: string;
30
+ /** The highest version. */
31
+ version: string;
32
+ /** Every version `/bin` lists for the name, lowest first. */
33
+ versions: string[];
34
+ }
35
+ /**
36
+ * Orders two plugin versions: dotted numeric segments as numbers, a missing
37
+ * segment as 0, so `1.10.0` is above `1.9.9`; a segment that is not a number
38
+ * sorts below any number at its place and against its kind as text, so
39
+ * `1.0.4` is above `1.0.4-rc1`.
40
+ *
41
+ * @param a - One version.
42
+ * @param b - Another.
43
+ * @returns Negative when `a` is lower, positive when higher, 0 when equal.
44
+ */
45
+ export declare function pluginVersions_compare(a: string, b: string): number;
46
+ /**
47
+ * Resolves a bare plugin name to the highest version `/bin` lists for it.
48
+ *
49
+ * `/bin` lists a plugin per version as `<name>-v<version>`, so a bare name
50
+ * matches nothing there by itself. Reading it as "the highest registered
51
+ * version" is derived from CUBE's own state, the same answer for everyone
52
+ * on that CUBE at that moment, and the run's record names the exact version
53
+ * regardless; a pin, when wanted, is the full name (#1303).
54
+ *
55
+ * @param command - The bare name as typed, e.g. `pl-freesurfer`.
56
+ * @returns The executable to run and the versions seen, or null when `/bin`
57
+ * lists no version of that name.
58
+ */
59
+ export declare function binPluginHighest_find(command: string): Promise<BinPluginHighest | null>;
@@ -25,4 +25,65 @@ export async function binExecutableMatches_get(command) {
25
25
  pipeline: binResult.value.find((item) => item.type === 'pipeline' && item.title === command),
26
26
  };
27
27
  }
28
+ /**
29
+ * Orders two plugin versions: dotted numeric segments as numbers, a missing
30
+ * segment as 0, so `1.10.0` is above `1.9.9`; a segment that is not a number
31
+ * sorts below any number at its place and against its kind as text, so
32
+ * `1.0.4` is above `1.0.4-rc1`.
33
+ *
34
+ * @param a - One version.
35
+ * @param b - Another.
36
+ * @returns Negative when `a` is lower, positive when higher, 0 when equal.
37
+ */
38
+ export function pluginVersions_compare(a, b) {
39
+ const segments = (version) => version.split(/[.\-]/);
40
+ const left = segments(a);
41
+ const right = segments(b);
42
+ const length = Math.max(left.length, right.length);
43
+ for (let index = 0; index < length; index++) {
44
+ const one = left[index] ?? '0';
45
+ const other = right[index] ?? '0';
46
+ const oneNumber = /^\d+$/.test(one) ? Number(one) : NaN;
47
+ const otherNumber = /^\d+$/.test(other) ? Number(other) : NaN;
48
+ if (!Number.isNaN(oneNumber) && !Number.isNaN(otherNumber)) {
49
+ if (oneNumber !== otherNumber)
50
+ return oneNumber - otherNumber;
51
+ continue;
52
+ }
53
+ // A pre-release word where the other side has a number, or has ended
54
+ // (`1.0.4` against `1.0.4-rc1`: the bare one is higher).
55
+ if (Number.isNaN(oneNumber) !== Number.isNaN(otherNumber))
56
+ return Number.isNaN(oneNumber) ? -1 : 1;
57
+ if (one !== other)
58
+ return one < other ? -1 : 1;
59
+ }
60
+ return 0;
61
+ }
62
+ /**
63
+ * Resolves a bare plugin name to the highest version `/bin` lists for it.
64
+ *
65
+ * `/bin` lists a plugin per version as `<name>-v<version>`, so a bare name
66
+ * matches nothing there by itself. Reading it as "the highest registered
67
+ * version" is derived from CUBE's own state, the same answer for everyone
68
+ * on that CUBE at that moment, and the run's record names the exact version
69
+ * regardless; a pin, when wanted, is the full name (#1303).
70
+ *
71
+ * @param command - The bare name as typed, e.g. `pl-freesurfer`.
72
+ * @returns The executable to run and the versions seen, or null when `/bin`
73
+ * lists no version of that name.
74
+ */
75
+ export async function binPluginHighest_find(command) {
76
+ const binResult = await vfs.data_get('/bin');
77
+ if (!binResult.ok)
78
+ return null;
79
+ const versions = binResult.value
80
+ .filter((item) => item.type === 'plugin' && item.name.startsWith(`${command}-v`))
81
+ .map((item) => item.name.slice(command.length + 2))
82
+ .filter((version) => version.length > 0)
83
+ .sort(pluginVersions_compare);
84
+ const version = versions[versions.length - 1];
85
+ if (version === undefined)
86
+ return null;
87
+ return { executable: `${command}-v${version}`, version, versions };
88
+ }
28
89
  //# sourceMappingURL=binExecutables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binExecutables.js","sourceRoot":"","sources":["../../src/chris/binExecutables.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAQxC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAe;IAC5D,MAAM,SAAS,GAA0B,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAA4B,SAAS,CAAC,KAAK,CAAC,IAAI,CAC1D,CAAC,IAAiB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAChF,CAAC;IACF,MAAM,QAAQ,GAA4B,SAAS,CAAC,KAAK,CAAC,IAAI,CAC5D,CAAC,IAAiB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAClF,CAAC;IACF,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChF,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAC5B,CAAC,IAAiB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CACnF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"binExecutables.js","sourceRoot":"","sources":["../../src/chris/binExecutables.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,90 @@
8
8
  *
9
9
  * @module
10
10
  */
11
+ import chalk from 'chalk';
11
12
  import { CHRIS_BUILTIN_LINES } from './help.js';
12
13
  import { variablesPage_render } from '../builtins/variablesPage.js';
13
14
  import { envelope_deliver, sink_get } from '../core/sink.js';
14
15
  import { exitCode_read, handler_runDirect } from '../core/handlerRun.js';
15
- import { binExecutableMatches_get } from './binExecutables.js';
16
+ import { binExecutableMatches_get, binPluginHighest_find } from './binExecutables.js';
16
17
  import { builtin_pipeline } from '../builtins/res/pipeline.js';
17
18
  import { builtin_executePlugin } from '../builtins/pluginExecute.js';
18
19
  import { pluginExecutable_handle } from '../builtins/executable.js';
19
20
  import { pipelineExecutableHelp_render, pluginExecutableHelp_render } from '../builtins/help.js';
20
21
  import { chiliCommand_run, chiliCommand_exists, chiliDelegationNotice_build } from './chiliDelegate.js';
22
+ import { feed_create } from '@fnndsc/salsa';
23
+ import { path_extractPluginInstanceID, path_isInFeed } from '@fnndsc/cumin';
24
+ import path from 'path';
25
+ import { path_resolve } from '../core/paths.js';
26
+ import { newFeed_cacheAdd } from '../builtins/feedCreation.js';
27
+ import { OperandRefusal, operands_read, stage_lines, stage_make, stageMade_lines } from '../builtins/operands.js';
28
+ /**
29
+ * The node a pipeline run starts from, read from its operand (#1303): a
30
+ * directory inside a feed is that node; outside one, or a set of files
31
+ * shaped into a stage, pl-dircopy roots a new feed first, the directory's
32
+ * name (or the subjects') as its title, and the run goes on from that root.
33
+ *
34
+ * @param name - The pipeline's `/bin` name, for the refusal lines.
35
+ * @param args - The words after it.
36
+ * @returns The words to run with (`--previous` set), or null after a refusal was said.
37
+ */
38
+ async function pipelineOperand_place(name, args) {
39
+ let operands;
40
+ try {
41
+ operands = await operands_read(args);
42
+ }
43
+ catch (error) {
44
+ if (!(error instanceof OperandRefusal))
45
+ throw error;
46
+ sink_get().err_write(chalk.red(`${name}: ${error.message}\n`));
47
+ return null;
48
+ }
49
+ if (operands.directory === null && operands.subjects.length === 0)
50
+ return args;
51
+ if (operands.rest.includes('--previous')) {
52
+ sink_get().err_write(chalk.red(`${name}: the operand and --previous say the input twice\n`));
53
+ return null;
54
+ }
55
+ if (operands.directory !== null && path_isInFeed(operands.directory)) {
56
+ const here = path_extractPluginInstanceID(operands.directory);
57
+ if (here === null) {
58
+ sink_get().err_write(chalk.red(`${name}: ${operands.typed[0]} is in a feed but not at a node (…/feeds/feed_N/pl-x_ID)\n`));
59
+ return null;
60
+ }
61
+ return ['--previous', String(here), ...operands.rest];
62
+ }
63
+ let stage = null;
64
+ let root = operands.directory ?? '';
65
+ let title = path.posix.basename(root);
66
+ if (operands.directory === null) {
67
+ try {
68
+ stage = await stage_make(operands.subjects, await path_resolve('~'));
69
+ }
70
+ catch (error) {
71
+ if (!(error instanceof OperandRefusal))
72
+ throw error;
73
+ sink_get().err_write(chalk.red(`${name}: ${error.message}\n`));
74
+ return null;
75
+ }
76
+ for (const line of stage_lines(stage))
77
+ sink_get().data_write(chalk.cyan(`${line}\n`));
78
+ root = stage.path;
79
+ title = stage.subjects.map((subject) => subject.name).join(', ');
80
+ }
81
+ const feed = await feed_create([root], { title });
82
+ if (feed === null) {
83
+ sink_get().err_write(chalk.red(`${name}: could not root a feed with pl-dircopy of ${operands.typed.join(' ')}\n`));
84
+ return null;
85
+ }
86
+ const rootInstanceID = feed.pluginInstance.data.id;
87
+ newFeed_cacheAdd({ feedID: feed.id, title, ownerUsername: feed.owner_username, rootInstanceID });
88
+ sink_get().data_write(chalk.green(`Feed created: ${feed.id}\n`));
89
+ if (stage !== null) {
90
+ for (const line of stageMade_lines(stage, `/home/${feed.owner_username}/feeds/feed_${feed.id}/pl-dircopy_${rootInstanceID}/data`))
91
+ sink_get().data_write(chalk.cyan(`${line}\n`));
92
+ }
93
+ return ['--previous', String(rootInstanceID), ...operands.rest];
94
+ }
21
95
  /**
22
96
  * Handles a pipeline name invoked directly as an executable from /bin.
23
97
  * Routes flag combinations to the appropriate pipeline subcommand:
@@ -56,7 +130,9 @@ async function pipelineExecutable_handle(name, args) {
56
130
  envelope = await builtin_pipeline(['source', name]);
57
131
  }
58
132
  else {
59
- envelope = await builtin_pipeline(['run', name, ...args]);
133
+ // The operand says where the run starts (#1303); refused, nothing runs.
134
+ const placed = await pipelineOperand_place(name, args);
135
+ envelope = placed === null ? { status: 'error', rendered: '' } : await builtin_pipeline(['run', name, ...placed]);
60
136
  }
61
137
  const result = envelope ?? { status: 'ok', rendered: '' };
62
138
  const exitCodeAfter = exitCode_read();
@@ -98,6 +174,15 @@ export const chrisFallback = {
98
174
  envelope_deliver(envelope);
99
175
  return envelope;
100
176
  }
177
+ // A bare plugin name runs the highest version /bin lists for it, and
178
+ // says which, so the line read back names exactly what ran (#1303).
179
+ // The same job rule as above: typed at the prompt it starts one, in a
180
+ // pipe or a redirect it does not.
181
+ const highest = captured ? null : await binPluginHighest_find(command);
182
+ if (highest !== null) {
183
+ sink_get().data_write(chalk.gray(`running ${highest.executable} (highest of ${highest.versions.join(', ')})\n`));
184
+ return handler_runDirect((pluginArgs) => builtin_executePlugin(highest.executable, pluginArgs), args);
185
+ }
101
186
  return chili_delegate(command, args);
102
187
  },
103
188
  help: async (command) => {
@@ -108,7 +193,11 @@ export const chrisFallback = {
108
193
  if (/-v[^/]+$/.test(command))
109
194
  return pluginExecutableHelp_render(command);
110
195
  const binMatches = await binExecutableMatches_get(command);
111
- return binMatches.pipeline ? pipelineExecutableHelp_render(binMatches.pipeline.name) : null;
196
+ if (binMatches.pipeline)
197
+ return pipelineExecutableHelp_render(binMatches.pipeline.name);
198
+ // A bare plugin name's help is its highest version's.
199
+ const highest = await binPluginHighest_find(command);
200
+ return highest === null ? null : pluginExecutableHelp_render(highest.executable);
112
201
  },
113
202
  };
114
203
  //# sourceMappingURL=commandFallback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commandFallback.js","sourceRoot":"","sources":["../../src/chris/commandFallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commandFallback.js","sourceRoot":"","sources":["../../src/chris/commandFallback.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@
6
6
  */
7
7
  import { plugins_listAll, pipelineManifest_get } from '@fnndsc/salsa';
8
8
  import { listCache_get } from '@fnndsc/cumin';
9
+ import { pluginInfo_build, pluginSpecifier_parse } from '../builtins/res/plugin.info.js';
10
+ import { pluginVersions_compare } from './binExecutables.js';
11
+ import { vfs } from '../lib/vfs/vfs.js';
9
12
  /**
10
13
  * Fetches available plugin names from /bin in the format: name-vVersion.
11
14
  * This matches the display format used in /bin listings.
@@ -91,10 +94,95 @@ async function pipelineOptions_get(args, word) {
91
94
  }
92
95
  return options.filter((option) => option.startsWith(word));
93
96
  }
97
+ /** A plugin's option words, by its `/bin` name, kept once read. */
98
+ const pluginOptions_cache = new Map();
99
+ /**
100
+ * The `/bin` name a line's first word runs as a plugin: itself when it is a
101
+ * full `name-vVersion` /bin lists, the highest version when it is a bare
102
+ * name (#1303), or null when /bin lists no such plugin.
103
+ *
104
+ * @param word - The line's first word.
105
+ * @returns The full `/bin` name, or null.
106
+ */
107
+ async function pluginExecutable_resolve(word) {
108
+ const names = await plugins_getNames();
109
+ if (names.includes(word))
110
+ return word;
111
+ const versions = names
112
+ .filter((name) => name.startsWith(`${word}-v`))
113
+ .map((name) => name.slice(word.length + 2))
114
+ .sort(pluginVersions_compare);
115
+ const highest = versions[versions.length - 1];
116
+ return highest === undefined ? null : `${word}-v${highest}`;
117
+ }
118
+ /**
119
+ * The `--flag` options of the plugin a line runs, starting with the word
120
+ * typed: its parameters as CUBE declares them, the list `--parameters`
121
+ * prints, read once per plugin (#1306). A boolean parameter is its flag
122
+ * alone.
123
+ *
124
+ * @param args - The line's words.
125
+ * @param word - The option word typed so far.
126
+ * @returns The options, none when the plugin cannot be read, or null for a
127
+ * line naming no plugin.
128
+ */
129
+ async function pluginOptions_get(args, word) {
130
+ const first = args[0];
131
+ if (first === undefined)
132
+ return null;
133
+ const executable = await pluginExecutable_resolve(first);
134
+ if (executable === null)
135
+ return null;
136
+ let options = pluginOptions_cache.get(executable);
137
+ if (options === undefined) {
138
+ const specifier = pluginSpecifier_parse(executable);
139
+ if (specifier === null)
140
+ return [];
141
+ const info = await pluginInfo_build(specifier);
142
+ if (!info.ok)
143
+ return [];
144
+ options = info.value.parameters.map((parameter) => parameter.flag);
145
+ pluginOptions_cache.set(executable, options);
146
+ }
147
+ return options.filter((option) => option.startsWith(word));
148
+ }
149
+ /**
150
+ * The option words for a line: a plugin's parameters when its first word
151
+ * runs a plugin, else a pipeline's `--node.field` options.
152
+ *
153
+ * @param args - The line's words.
154
+ * @param word - The option word typed so far.
155
+ * @returns The options, or null for a line the session does not complete.
156
+ */
157
+ async function lineOptions_get(args, word) {
158
+ const plugin = await pluginOptions_get(args, word);
159
+ return plugin !== null ? plugin : pipelineOptions_get(args, word);
160
+ }
161
+ /**
162
+ * Whether a word names a `/bin` entry, whose arguments are paths (#1305):
163
+ * a plugin `name-vVersion`, a bare plugin name (any version listed, #1303),
164
+ * or a pipeline by its `/bin` name or its own name.
165
+ *
166
+ * @param command - The line's first word.
167
+ * @returns True for a `/bin` entry.
168
+ */
169
+ async function binPathArguments(command) {
170
+ const names = await plugins_getNames();
171
+ if (names.includes(command) || names.some((name) => name.startsWith(`${command}-v`)))
172
+ return true;
173
+ try {
174
+ const bin = await vfs.data_get('/bin');
175
+ return bin.ok && bin.value.some((item) => item.type === 'pipeline' && (item.name === command || item.title === command));
176
+ }
177
+ catch {
178
+ return false;
179
+ }
180
+ }
94
181
  /** What the ChRIS session adds to completion. */
95
182
  export const chrisCompletion = {
96
183
  commandWords: plugins_getNames,
97
- options: pipelineOptions_get,
184
+ options: lineOptions_get,
185
+ pathArguments: binPathArguments,
98
186
  rootWords: ['bin', 'usr'],
99
187
  };
100
188
  //# sourceMappingURL=completion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/chris/completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/chris/completion.ts"],"names":[],"mappings":"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"}
@@ -227,6 +227,9 @@ export const chrisHelp = {
227
227
  '',
228
228
  'RUNNING A PLUGIN:',
229
229
  ' pl-dcm2niix-v1.0.2 --param value -- feed_title="T" run where you stand',
230
+ ' pl-dcm2niix … the bare name runs the highest version, and says which',
231
+ ' pl-dcm2niix ~/uploads/subjects on that tree instead of where you stand',
232
+ ' pl-dcm2niix ~/uploads/t1.nii as sub-01 --param v one subject, the file in it; operands first',
230
233
  ' A=$(pl-dcm2niix-v1.0.2 …) and name the run',
231
234
  '',
232
235
  ' Run "parametersofplugin <name>" to see available parameters for a plugin.',