@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.
- package/dist/buildinfo.json +1 -0
- package/dist/builtins/argumentTokens.d.ts +18 -0
- package/dist/builtins/argumentTokens.js +58 -0
- package/dist/builtins/argumentTokens.js.map +1 -0
- package/dist/builtins/executable.d.ts +3 -7
- package/dist/builtins/executable.js +32 -29
- package/dist/builtins/executable.js.map +1 -1
- package/dist/builtins/feedCreation.d.ts +23 -0
- package/dist/builtins/feedCreation.js +45 -0
- package/dist/builtins/feedCreation.js.map +1 -0
- package/dist/builtins/fs/cat.args.d.ts +36 -0
- package/dist/builtins/fs/cat.args.js +63 -0
- package/dist/builtins/fs/cat.args.js.map +1 -0
- package/dist/builtins/fs/cat.d.ts +2 -2
- package/dist/builtins/fs/cat.js +222 -101
- package/dist/builtins/fs/cat.js.map +1 -1
- package/dist/builtins/fs/cd.js +41 -5
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/cp.js +3 -2
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/download.d.ts +1 -1
- package/dist/builtins/fs/download.js +52 -13
- package/dist/builtins/fs/download.js.map +1 -1
- package/dist/builtins/fs/du.js +15 -1
- package/dist/builtins/fs/du.js.map +1 -1
- package/dist/builtins/fs/ls.js +10 -1
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/mv.js +7 -3
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/pull.args.d.ts +14 -1
- package/dist/builtins/fs/pull.args.js +72 -9
- package/dist/builtins/fs/pull.args.js.map +1 -1
- package/dist/builtins/fs/pull.d.ts +1 -0
- package/dist/builtins/fs/pull.js +191 -259
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/fs/rm.js +4 -0
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/tree.js +7 -3
- package/dist/builtins/fs/tree.js.map +1 -1
- package/dist/builtins/fs/upload.js +29 -2
- package/dist/builtins/fs/upload.js.map +1 -1
- package/dist/builtins/help.d.ts +7 -0
- package/dist/builtins/help.js +144 -36
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/index.d.ts +1 -0
- package/dist/builtins/index.js +1 -0
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/net/cubepath.js +1 -2
- package/dist/builtins/net/cubepath.js.map +1 -1
- package/dist/builtins/net/pacs.d.ts +1 -0
- package/dist/builtins/net/pacs.js +5 -1
- package/dist/builtins/net/pacs.js.map +1 -1
- package/dist/builtins/net/pacsUtils.d.ts +4 -23
- package/dist/builtins/net/pacsUtils.js +11 -32
- package/dist/builtins/net/pacsUtils.js.map +1 -1
- package/dist/builtins/net/query.js +4 -1
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/net/status.d.ts +14 -0
- package/dist/builtins/net/status.js +210 -0
- package/dist/builtins/net/status.js.map +1 -0
- package/dist/builtins/pluginExecute.d.ts +3 -2
- package/dist/builtins/pluginExecute.js +41 -70
- package/dist/builtins/pluginExecute.js.map +1 -1
- package/dist/builtins/pluginSelector.d.ts +15 -0
- package/dist/builtins/pluginSelector.js +21 -0
- package/dist/builtins/pluginSelector.js.map +1 -0
- package/dist/builtins/proc.js +106 -4
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/compute.js +8 -3
- package/dist/builtins/res/compute.js.map +1 -1
- package/dist/builtins/res/feed.js +3 -3
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/files.js +2 -2
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/group.d.ts +1 -1
- package/dist/builtins/res/group.js +124 -7
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/pipeline.args.d.ts +4 -0
- package/dist/builtins/res/pipeline.args.js +63 -12
- package/dist/builtins/res/pipeline.args.js.map +1 -1
- package/dist/builtins/res/pipeline.d.ts +3 -1
- package/dist/builtins/res/pipeline.js +155 -60
- package/dist/builtins/res/pipeline.js.map +1 -1
- package/dist/builtins/res/pipeline.manifest.d.ts +15 -0
- package/dist/builtins/res/pipeline.manifest.js +93 -0
- package/dist/builtins/res/pipeline.manifest.js.map +1 -0
- package/dist/builtins/res/plugin.js +16 -9
- package/dist/builtins/res/plugin.js.map +1 -1
- package/dist/builtins/res/plugininstance.js +2 -2
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.js +2 -2
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/tag.js +2 -2
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/user.d.ts +8 -0
- package/dist/builtins/res/user.js +87 -0
- package/dist/builtins/res/user.js.map +1 -0
- package/dist/builtins/res/workflow.js +2 -2
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/store.js +24 -3
- package/dist/builtins/store.js.map +1 -1
- package/dist/builtins/sys/fortune.d.ts +9 -0
- package/dist/builtins/sys/fortune.js +16 -1
- package/dist/builtins/sys/fortune.js.map +1 -1
- package/dist/builtins/sys/whoami.d.ts +13 -1
- package/dist/builtins/sys/whoami.js +47 -2
- package/dist/builtins/sys/whoami.js.map +1 -1
- package/dist/builtins/utils.d.ts +25 -1
- package/dist/builtins/utils.js +30 -3
- package/dist/builtins/utils.js.map +1 -1
- package/dist/builtins/wildcard.d.ts +31 -0
- package/dist/builtins/wildcard.js +114 -51
- package/dist/builtins/wildcard.js.map +1 -1
- package/dist/command-keys.js +2 -1
- package/dist/command-keys.js.map +1 -1
- package/dist/core/cancellation.d.ts +28 -0
- package/dist/core/cancellation.js +70 -0
- package/dist/core/cancellation.js.map +1 -0
- package/dist/core/dispatch.d.ts +1 -8
- package/dist/core/dispatch.js +82 -82
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/elevation.d.ts +35 -0
- package/dist/core/elevation.js +77 -0
- package/dist/core/elevation.js.map +1 -0
- package/dist/core/engine.d.ts +12 -0
- package/dist/core/engine.js +35 -8
- package/dist/core/engine.js.map +1 -1
- package/dist/core/preprocess.d.ts +11 -4
- package/dist/core/preprocess.js +43 -10
- package/dist/core/preprocess.js.map +1 -1
- package/dist/core/progress.d.ts +15 -5
- package/dist/core/progress.js +14 -0
- package/dist/core/progress.js.map +1 -1
- package/dist/core/promptContext.d.ts +3 -5
- package/dist/core/promptContext.js +9 -2
- package/dist/core/promptContext.js.map +1 -1
- package/dist/core/sink.d.ts +9 -0
- package/dist/core/sink.js +23 -3
- package/dist/core/sink.js.map +1 -1
- package/dist/core/surface.d.ts +14 -0
- package/dist/core/surface.js +5 -0
- package/dist/core/surface.js.map +1 -1
- package/dist/core/version.d.ts +34 -0
- package/dist/core/version.js +51 -0
- package/dist/core/version.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/completer/index.js +41 -2
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/parser.d.ts +75 -2
- package/dist/lib/parser.js +158 -15
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/vfs/listing.d.ts +22 -0
- package/dist/lib/vfs/listing.js +14 -0
- package/dist/lib/vfs/listing.js.map +1 -0
- package/dist/lib/vfs/providers/binEntry.d.ts +20 -0
- package/dist/lib/vfs/providers/binEntry.js +47 -0
- package/dist/lib/vfs/providers/binEntry.js.map +1 -0
- package/dist/lib/vfs/providers/static.js +1 -0
- package/dist/lib/vfs/providers/static.js.map +1 -1
- package/dist/lib/vfs/providers/static_content.js +7 -38
- package/dist/lib/vfs/providers/static_content.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +7 -0
- package/dist/lib/vfs/vfs.js +28 -2
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/dist/session/index.d.ts +18 -0
- package/dist/session/index.js +29 -1
- package/dist/session/index.js.map +1 -1
- package/package.json +10 -5
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
import { session } from '../../session/index.js';
|
|
10
|
-
import { plugins_listAll, vfsDispatcher, context_getSingle } from '@fnndsc/salsa';
|
|
10
|
+
import { plugins_listAll, vfsDispatcher, context_getSingle, pipelineManifest_get, } from '@fnndsc/salsa';
|
|
11
|
+
import { listingItemsFromVfs_make } from '../vfs/listing.js';
|
|
11
12
|
import { partialPath_split, completions_build } from './pathComplete.helpers.js';
|
|
12
13
|
import { listCache_get } from '@fnndsc/cumin';
|
|
13
14
|
import * as path from 'path';
|
|
@@ -124,6 +125,44 @@ export function input_complete(line, callback) {
|
|
|
124
125
|
});
|
|
125
126
|
return;
|
|
126
127
|
}
|
|
128
|
+
const compoundWord = completionWord_get(line);
|
|
129
|
+
if (compoundWord.value.startsWith('--')) {
|
|
130
|
+
const pipelineSpecifier = args[0] === 'pipeline' && args[1] === 'run'
|
|
131
|
+
? args[2]
|
|
132
|
+
: args[0];
|
|
133
|
+
if (pipelineSpecifier !== undefined) {
|
|
134
|
+
pipelineManifest_get(pipelineSpecifier).then((result) => {
|
|
135
|
+
if (!result.ok) {
|
|
136
|
+
callback(null, [[], compoundWord.raw]);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const executionFields = [
|
|
140
|
+
'compute_resource_name', 'cpu_limit', 'memory_limit', 'gpu_limit', 'number_of_workers',
|
|
141
|
+
];
|
|
142
|
+
const options = [];
|
|
143
|
+
const manifest = result.value;
|
|
144
|
+
for (const node of manifest.nodes) {
|
|
145
|
+
const titleUsable = /^[A-Za-z0-9_-]+$/.test(node.title) &&
|
|
146
|
+
manifest.nodes.filter((candidate) => candidate.title === node.title).length === 1;
|
|
147
|
+
const selectors = titleUsable ? [node.title, `@${node.pipingID}`] : [`@${node.pipingID}`];
|
|
148
|
+
const fields = [
|
|
149
|
+
...executionFields,
|
|
150
|
+
...(node.parameterDefinitions ?? [])
|
|
151
|
+
.filter((parameter) => parameter.name !== 'plugininstances')
|
|
152
|
+
.map((parameter) => parameter.name),
|
|
153
|
+
];
|
|
154
|
+
for (const field of fields) {
|
|
155
|
+
options.push(...selectors.map((selector) => `--${selector}.${field}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
callback(null, [
|
|
159
|
+
options.filter((option) => option.startsWith(compoundWord.value)),
|
|
160
|
+
compoundWord.raw,
|
|
161
|
+
]);
|
|
162
|
+
}).catch(() => callback(null, [[], compoundWord.raw]));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
127
166
|
// Case 2: Path Completion (Argument to specific commands)
|
|
128
167
|
const cmd = args[0];
|
|
129
168
|
if (['cd', 'ls', 'mkdir', 'touch', 'cat', 'edit', 'cp', 'mv', 'rm', 'upload', 'download', 'du', 'tree', 'pull', 'cubepath', 'query'].includes(cmd)) {
|
|
@@ -181,7 +220,7 @@ async function path_complete(partial) {
|
|
|
181
220
|
// Use vfsDispatcher for all path types — handles /pacs, /bin, native, etc.
|
|
182
221
|
const vfsResult = await vfsDispatcher.list(absDirToList);
|
|
183
222
|
if (vfsResult.ok) {
|
|
184
|
-
items = vfsResult.value;
|
|
223
|
+
items = listingItemsFromVfs_make(vfsResult.value);
|
|
185
224
|
}
|
|
186
225
|
// Inject virtual directories at root if missing
|
|
187
226
|
if (absDirToList === '/' || absDirToList === '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/completer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/completer/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/parser.d.ts
CHANGED
|
@@ -1,9 +1,82 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Command line argument tokenizer.
|
|
3
3
|
*
|
|
4
|
-
* Splits a command line into
|
|
5
|
-
*
|
|
4
|
+
* Splits a command line into words while respecting single/double quotes and
|
|
5
|
+
* backslash escapes. Quotes are stripped from rendered values, but their
|
|
6
|
+
* pathname-expansion meaning is retained.
|
|
6
7
|
*/
|
|
8
|
+
/** A rendered shell word and the glob pattern it may contribute. */
|
|
9
|
+
export interface ShellWord {
|
|
10
|
+
value: string;
|
|
11
|
+
globPattern: string;
|
|
12
|
+
pathnameExpansion: boolean;
|
|
13
|
+
pathnameExpanded: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** String arguments with per-operand pathname-expansion provenance. */
|
|
16
|
+
export type ShellArguments = string[] & {
|
|
17
|
+
pathnameExpanded?: readonly boolean[];
|
|
18
|
+
pathnameExpansion?: readonly boolean[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Creates a shell word from a literal value.
|
|
22
|
+
*
|
|
23
|
+
* @param value - Rendered word value.
|
|
24
|
+
* @returns A word that cannot trigger pathname expansion.
|
|
25
|
+
*/
|
|
26
|
+
export declare function shellWord_literal(value: string): ShellWord;
|
|
27
|
+
/**
|
|
28
|
+
* Creates an unquoted shell word from a compatibility string value.
|
|
29
|
+
*
|
|
30
|
+
* @param value - Rendered word value.
|
|
31
|
+
* @returns A word whose wildcard syntax is eligible for pathname expansion.
|
|
32
|
+
*/
|
|
33
|
+
export declare function shellWord_unquoted(value: string): ShellWord;
|
|
34
|
+
/**
|
|
35
|
+
* Converts shell words to compatibility string arguments.
|
|
36
|
+
*
|
|
37
|
+
* @param words - Parsed or expanded shell words.
|
|
38
|
+
* @returns String arguments annotated with expansion provenance.
|
|
39
|
+
*/
|
|
40
|
+
export declare function shellWords_values(words: readonly ShellWord[]): ShellArguments;
|
|
41
|
+
/**
|
|
42
|
+
* Checks whether one compatibility argument was produced by pathname expansion.
|
|
43
|
+
*
|
|
44
|
+
* @param args - String arguments created by {@link shellWords_values}.
|
|
45
|
+
* @param index - Argument position to inspect.
|
|
46
|
+
* @returns True when the argument was produced by pathname expansion.
|
|
47
|
+
*/
|
|
48
|
+
export declare function shellArguments_pathnameExpanded(args: readonly string[], index: number): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Checks whether one compatibility argument contained unquoted wildcard syntax.
|
|
51
|
+
*
|
|
52
|
+
* @param args - String arguments created by {@link shellWords_values}.
|
|
53
|
+
* @param index - Argument position to inspect.
|
|
54
|
+
* @returns True when the source word allowed pathname expansion.
|
|
55
|
+
*/
|
|
56
|
+
export declare function shellArguments_pathnameExpansion(args: readonly string[], index: number): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Applies environment substitution without discarding shell-word provenance.
|
|
59
|
+
*
|
|
60
|
+
* @param args - Compatibility arguments with pathname metadata.
|
|
61
|
+
* @param expand - Per-token environment substitution function.
|
|
62
|
+
* @returns Substituted arguments retaining the original pathname metadata.
|
|
63
|
+
*/
|
|
64
|
+
export declare function shellArguments_envRefsExpand(args: readonly string[], expand: (value: string) => string): ShellArguments;
|
|
65
|
+
/**
|
|
66
|
+
* Slices compatibility arguments while rebasing pathname metadata.
|
|
67
|
+
*
|
|
68
|
+
* @param args - Compatibility arguments with pathname metadata.
|
|
69
|
+
* @param start - Inclusive offset of the first returned argument.
|
|
70
|
+
* @returns The sliced arguments with matching provenance entries.
|
|
71
|
+
*/
|
|
72
|
+
export declare function shellArguments_slice(args: readonly string[], start: number): ShellArguments;
|
|
73
|
+
/**
|
|
74
|
+
* Tokenizes a line while preserving quote and escape provenance for globbing.
|
|
75
|
+
*
|
|
76
|
+
* @param line - Raw command line input.
|
|
77
|
+
* @returns Parsed shell words with rendered and glob-pattern representations.
|
|
78
|
+
*/
|
|
79
|
+
export declare function shellWords_tokenize(line: string): ShellWord[];
|
|
7
80
|
/**
|
|
8
81
|
* Tokenizes a command line preserving quoted segments with spaces.
|
|
9
82
|
*
|
package/dist/lib/parser.js
CHANGED
|
@@ -1,52 +1,195 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Command line argument tokenizer.
|
|
3
3
|
*
|
|
4
|
-
* Splits a command line into
|
|
5
|
-
*
|
|
4
|
+
* Splits a command line into words while respecting single/double quotes and
|
|
5
|
+
* backslash escapes. Quotes are stripped from rendered values, but their
|
|
6
|
+
* pathname-expansion meaning is retained.
|
|
6
7
|
*/
|
|
8
|
+
/** Escapes wildcard metacharacters for literal minimatch use. */
|
|
9
|
+
function globLiteral_escape(value) {
|
|
10
|
+
return value.replace(/[\\*?\[\]]/g, '\\$&');
|
|
11
|
+
}
|
|
7
12
|
/**
|
|
8
|
-
*
|
|
13
|
+
* Creates a shell word from a literal value.
|
|
14
|
+
*
|
|
15
|
+
* @param value - Rendered word value.
|
|
16
|
+
* @returns A word that cannot trigger pathname expansion.
|
|
17
|
+
*/
|
|
18
|
+
export function shellWord_literal(value) {
|
|
19
|
+
return {
|
|
20
|
+
value,
|
|
21
|
+
globPattern: globLiteral_escape(value),
|
|
22
|
+
pathnameExpansion: false,
|
|
23
|
+
pathnameExpanded: false,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates an unquoted shell word from a compatibility string value.
|
|
28
|
+
*
|
|
29
|
+
* @param value - Rendered word value.
|
|
30
|
+
* @returns A word whose wildcard syntax is eligible for pathname expansion.
|
|
31
|
+
*/
|
|
32
|
+
export function shellWord_unquoted(value) {
|
|
33
|
+
return {
|
|
34
|
+
value,
|
|
35
|
+
globPattern: value,
|
|
36
|
+
pathnameExpansion: /[*?[\]]/.test(value),
|
|
37
|
+
pathnameExpanded: false,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Converts shell words to compatibility string arguments.
|
|
42
|
+
*
|
|
43
|
+
* @param words - Parsed or expanded shell words.
|
|
44
|
+
* @returns String arguments annotated with expansion provenance.
|
|
45
|
+
*/
|
|
46
|
+
export function shellWords_values(words) {
|
|
47
|
+
const values = words.map((word) => word.value);
|
|
48
|
+
Object.defineProperty(values, 'pathnameExpanded', {
|
|
49
|
+
value: words.map((word) => word.pathnameExpanded),
|
|
50
|
+
enumerable: false,
|
|
51
|
+
});
|
|
52
|
+
Object.defineProperty(values, 'pathnameExpansion', {
|
|
53
|
+
value: words.map((word) => word.pathnameExpansion),
|
|
54
|
+
enumerable: false,
|
|
55
|
+
});
|
|
56
|
+
return values;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Checks whether one compatibility argument was produced by pathname expansion.
|
|
60
|
+
*
|
|
61
|
+
* @param args - String arguments created by {@link shellWords_values}.
|
|
62
|
+
* @param index - Argument position to inspect.
|
|
63
|
+
* @returns True when the argument was produced by pathname expansion.
|
|
64
|
+
*/
|
|
65
|
+
export function shellArguments_pathnameExpanded(args, index) {
|
|
66
|
+
const expanded = args.pathnameExpanded;
|
|
67
|
+
return expanded?.[index] === true;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Checks whether one compatibility argument contained unquoted wildcard syntax.
|
|
71
|
+
*
|
|
72
|
+
* @param args - String arguments created by {@link shellWords_values}.
|
|
73
|
+
* @param index - Argument position to inspect.
|
|
74
|
+
* @returns True when the source word allowed pathname expansion.
|
|
75
|
+
*/
|
|
76
|
+
export function shellArguments_pathnameExpansion(args, index) {
|
|
77
|
+
const expansion = args.pathnameExpansion;
|
|
78
|
+
return expansion?.[index] === true;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Applies environment substitution without discarding shell-word provenance.
|
|
82
|
+
*
|
|
83
|
+
* @param args - Compatibility arguments with pathname metadata.
|
|
84
|
+
* @param expand - Per-token environment substitution function.
|
|
85
|
+
* @returns Substituted arguments retaining the original pathname metadata.
|
|
86
|
+
*/
|
|
87
|
+
export function shellArguments_envRefsExpand(args, expand) {
|
|
88
|
+
const values = args.map(expand);
|
|
89
|
+
const source = args;
|
|
90
|
+
Object.defineProperty(values, 'pathnameExpanded', {
|
|
91
|
+
value: source.pathnameExpanded,
|
|
92
|
+
enumerable: false,
|
|
93
|
+
});
|
|
94
|
+
Object.defineProperty(values, 'pathnameExpansion', {
|
|
95
|
+
value: source.pathnameExpansion,
|
|
96
|
+
enumerable: false,
|
|
97
|
+
});
|
|
98
|
+
return values;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Slices compatibility arguments while rebasing pathname metadata.
|
|
102
|
+
*
|
|
103
|
+
* @param args - Compatibility arguments with pathname metadata.
|
|
104
|
+
* @param start - Inclusive offset of the first returned argument.
|
|
105
|
+
* @returns The sliced arguments with matching provenance entries.
|
|
106
|
+
*/
|
|
107
|
+
export function shellArguments_slice(args, start) {
|
|
108
|
+
const source = args;
|
|
109
|
+
const values = args.slice(start);
|
|
110
|
+
Object.defineProperty(values, 'pathnameExpanded', {
|
|
111
|
+
value: source.pathnameExpanded?.slice(start),
|
|
112
|
+
enumerable: false,
|
|
113
|
+
});
|
|
114
|
+
Object.defineProperty(values, 'pathnameExpansion', {
|
|
115
|
+
value: source.pathnameExpansion?.slice(start),
|
|
116
|
+
enumerable: false,
|
|
117
|
+
});
|
|
118
|
+
return values;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Tokenizes a line while preserving quote and escape provenance for globbing.
|
|
9
122
|
*
|
|
10
123
|
* @param line - Raw command line input.
|
|
11
|
-
* @returns
|
|
124
|
+
* @returns Parsed shell words with rendered and glob-pattern representations.
|
|
12
125
|
*/
|
|
13
|
-
export function
|
|
126
|
+
export function shellWords_tokenize(line) {
|
|
14
127
|
const tokens = [];
|
|
15
|
-
let
|
|
128
|
+
let currentValue = '';
|
|
129
|
+
let currentPattern = '';
|
|
130
|
+
let pathnameExpansion = false;
|
|
131
|
+
let wordStarted = false;
|
|
16
132
|
let inSingle = false;
|
|
17
133
|
let inDouble = false;
|
|
18
134
|
let escapeNext = false;
|
|
135
|
+
const character_append = (char, literal) => {
|
|
136
|
+
currentValue += char;
|
|
137
|
+
currentPattern += literal ? globLiteral_escape(char) : char;
|
|
138
|
+
pathnameExpansion ||= !literal && /[*?[\]]/.test(char);
|
|
139
|
+
wordStarted = true;
|
|
140
|
+
};
|
|
141
|
+
const word_pushCurrent = () => {
|
|
142
|
+
if (!wordStarted)
|
|
143
|
+
return;
|
|
144
|
+
tokens.push({
|
|
145
|
+
value: currentValue,
|
|
146
|
+
globPattern: currentPattern,
|
|
147
|
+
pathnameExpansion,
|
|
148
|
+
pathnameExpanded: false,
|
|
149
|
+
});
|
|
150
|
+
currentValue = '';
|
|
151
|
+
currentPattern = '';
|
|
152
|
+
pathnameExpansion = false;
|
|
153
|
+
wordStarted = false;
|
|
154
|
+
};
|
|
19
155
|
for (let i = 0; i < line.length; i++) {
|
|
20
156
|
const char = line[i];
|
|
21
157
|
if (escapeNext) {
|
|
22
|
-
|
|
158
|
+
character_append(char, true);
|
|
23
159
|
escapeNext = false;
|
|
24
160
|
continue;
|
|
25
161
|
}
|
|
26
162
|
if (char === '\\') {
|
|
27
163
|
escapeNext = true;
|
|
164
|
+
wordStarted = true;
|
|
28
165
|
continue;
|
|
29
166
|
}
|
|
30
167
|
if (char === "'" && !inDouble) {
|
|
31
168
|
inSingle = !inSingle;
|
|
169
|
+
wordStarted = true;
|
|
32
170
|
continue;
|
|
33
171
|
}
|
|
34
172
|
if (char === '"' && !inSingle) {
|
|
35
173
|
inDouble = !inDouble;
|
|
174
|
+
wordStarted = true;
|
|
36
175
|
continue;
|
|
37
176
|
}
|
|
38
177
|
if (!inSingle && !inDouble && /\s/.test(char)) {
|
|
39
|
-
|
|
40
|
-
tokens.push(current);
|
|
41
|
-
current = '';
|
|
42
|
-
}
|
|
178
|
+
word_pushCurrent();
|
|
43
179
|
continue;
|
|
44
180
|
}
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
if (current.length > 0) {
|
|
48
|
-
tokens.push(current);
|
|
181
|
+
character_append(char, inSingle || inDouble);
|
|
49
182
|
}
|
|
183
|
+
word_pushCurrent();
|
|
50
184
|
return tokens;
|
|
51
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Tokenizes a command line preserving quoted segments with spaces.
|
|
188
|
+
*
|
|
189
|
+
* @param line - Raw command line input.
|
|
190
|
+
* @returns Array of tokens with quotes removed.
|
|
191
|
+
*/
|
|
192
|
+
export function args_tokenize(line) {
|
|
193
|
+
return shellWords_tokenize(line).map((word) => word.value);
|
|
194
|
+
}
|
|
52
195
|
//# sourceMappingURL=parser.js.map
|
package/dist/lib/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO;QACL,KAAK;QACL,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACtC,iBAAiB,EAAE,KAAK;QACxB,gBAAgB,EAAE,KAAK;KACxB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO;QACL,KAAK;QACL,WAAW,EAAE,KAAK;QAClB,iBAAiB,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACxC,gBAAgB,EAAE,KAAK;KACxB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA2B;IAC3D,MAAM,MAAM,GAAmB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAe,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAmB,CAAC;IACpG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;QAChD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAe,EAAW,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrE,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE;QACjD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAe,EAAW,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACtE,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAAuB,EAAE,KAAa;IACpF,MAAM,QAAQ,GAAoC,IAAuB,CAAC,gBAAgB,CAAC;IAC3F,OAAO,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAAuB,EAAE,KAAa;IACrF,MAAM,SAAS,GAAoC,IAAuB,CAAC,iBAAiB,CAAC;IAC7F,OAAO,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAAuB,EACvB,MAAiC;IAEjC,MAAM,MAAM,GAAmB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAmB,CAAC;IAClE,MAAM,MAAM,GAAmB,IAAsB,CAAC;IACtD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;QAChD,KAAK,EAAE,MAAM,CAAC,gBAAgB;QAC9B,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE;QACjD,KAAK,EAAE,MAAM,CAAC,iBAAiB;QAC/B,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAuB,EAAE,KAAa;IACzE,MAAM,MAAM,GAAmB,IAAsB,CAAC;IACtD,MAAM,MAAM,GAAmB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAmB,CAAC;IACnE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;QAChD,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC;QAC5C,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE;QACjD,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC;QAC7C,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,YAAY,GAAW,EAAE,CAAC;IAC9B,IAAI,cAAc,GAAW,EAAE,CAAC;IAChC,IAAI,iBAAiB,GAAY,KAAK,CAAC;IACvC,IAAI,WAAW,GAAY,KAAK,CAAC;IACjC,IAAI,QAAQ,GAAY,KAAK,CAAC;IAC9B,IAAI,QAAQ,GAAY,KAAK,CAAC;IAC9B,IAAI,UAAU,GAAY,KAAK,CAAC;IAEhC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAgB,EAAQ,EAAE;QAChE,YAAY,IAAI,IAAI,CAAC;QACrB,cAAc,IAAI,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,iBAAiB,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAClC,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,cAAc;YAC3B,iBAAiB;YACjB,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;QACH,YAAY,GAAG,EAAE,CAAC;QAClB,cAAc,GAAG,EAAE,CAAC;QACpB,iBAAiB,GAAG,KAAK,CAAC;QAC1B,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,UAAU,EAAE,CAAC;YACf,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,UAAU,GAAG,IAAI,CAAC;YAClB,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,gBAAgB,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QAED,gBAAgB,CAAC,IAAI,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB,EAAE,CAAC;IACnB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAe,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Bridge between salsa VFS items and chili listing view models.
|
|
3
|
+
*
|
|
4
|
+
* Kept as a leaf module (type-only imports) so consumers like wildcard
|
|
5
|
+
* expansion and tab completion can use the conversion without pulling the
|
|
6
|
+
* whole VFS router into their module graph.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import type { ListingItem } from '@fnndsc/chili/models/listing.js';
|
|
11
|
+
import type { VFSItem } from '@fnndsc/salsa';
|
|
12
|
+
/**
|
|
13
|
+
* Converts salsa VFS items into chili listing view models.
|
|
14
|
+
*
|
|
15
|
+
* The two shapes are field-identical, but ListingItem carries an index
|
|
16
|
+
* signature (SimpleRecord) that VFSItem does not declare, so the bridge is a
|
|
17
|
+
* real per-item copy rather than a cast.
|
|
18
|
+
*
|
|
19
|
+
* @param items - Items from a vfsDispatcher listing.
|
|
20
|
+
* @returns The same items as ListingItem view models.
|
|
21
|
+
*/
|
|
22
|
+
export declare function listingItemsFromVfs_make(items: VFSItem[]): ListingItem[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts salsa VFS items into chili listing view models.
|
|
3
|
+
*
|
|
4
|
+
* The two shapes are field-identical, but ListingItem carries an index
|
|
5
|
+
* signature (SimpleRecord) that VFSItem does not declare, so the bridge is a
|
|
6
|
+
* real per-item copy rather than a cast.
|
|
7
|
+
*
|
|
8
|
+
* @param items - Items from a vfsDispatcher listing.
|
|
9
|
+
* @returns The same items as ListingItem view models.
|
|
10
|
+
*/
|
|
11
|
+
export function listingItemsFromVfs_make(items) {
|
|
12
|
+
return items.map((item) => ({ ...item }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=listing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listing.js","sourceRoot":"","sources":["../../../src/lib/vfs/listing.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAgB;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Shallow identity and discovery information for one Pipeline executable. */
|
|
2
|
+
export interface BinPipelineSummary {
|
|
3
|
+
command: string;
|
|
4
|
+
pipelineID: number;
|
|
5
|
+
name?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a Pipeline executable from cached `/bin` identity only.
|
|
9
|
+
*
|
|
10
|
+
* @param commandName - Exact dynamic `/bin` entry basename.
|
|
11
|
+
* @returns A shallow summary, or null when the name is known not to be a Pipeline.
|
|
12
|
+
*/
|
|
13
|
+
export declare function binPipelineSummary_try(commandName: string): BinPipelineSummary | null;
|
|
14
|
+
/**
|
|
15
|
+
* Serialize a shallow Pipeline executable summary.
|
|
16
|
+
*
|
|
17
|
+
* @param summary - Cache-only Pipeline identity and discovery information.
|
|
18
|
+
* @returns Stable YAML directing callers to the explicit manifest command.
|
|
19
|
+
*/
|
|
20
|
+
export declare function binPipelineSummary_render(summary: BinPipelineSummary): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Cache-only summaries for registered Pipeline executables in `/bin`.
|
|
3
|
+
*
|
|
4
|
+
* Reading an executable entry must not hydrate its registered invocation
|
|
5
|
+
* manifest. This module uses the warm `/bin` listing when available and falls
|
|
6
|
+
* back to the stable `_id<N>` suffix, without making a CUBE request.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { listCache_get } from '@fnndsc/cumin';
|
|
11
|
+
import { dump as yamlDump } from 'js-yaml';
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a Pipeline executable from cached `/bin` identity only.
|
|
14
|
+
*
|
|
15
|
+
* @param commandName - Exact dynamic `/bin` entry basename.
|
|
16
|
+
* @returns A shallow summary, or null when the name is known not to be a Pipeline.
|
|
17
|
+
*/
|
|
18
|
+
export function binPipelineSummary_try(commandName) {
|
|
19
|
+
const idMatch = commandName.match(/_id(\d+)$/);
|
|
20
|
+
if (idMatch === null)
|
|
21
|
+
return null;
|
|
22
|
+
const cached = listCache_get().cache_get('/bin');
|
|
23
|
+
const entry = cached?.data.find((candidate) => candidate.type === 'pipeline' && candidate.name === commandName);
|
|
24
|
+
if (cached !== null && entry === undefined)
|
|
25
|
+
return null;
|
|
26
|
+
return {
|
|
27
|
+
command: commandName,
|
|
28
|
+
pipelineID: entry?.id ?? Number(idMatch[1]),
|
|
29
|
+
name: entry?.title,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Serialize a shallow Pipeline executable summary.
|
|
34
|
+
*
|
|
35
|
+
* @param summary - Cache-only Pipeline identity and discovery information.
|
|
36
|
+
* @returns Stable YAML directing callers to the explicit manifest command.
|
|
37
|
+
*/
|
|
38
|
+
export function binPipelineSummary_render(summary) {
|
|
39
|
+
return yamlDump({
|
|
40
|
+
kind: 'pipeline',
|
|
41
|
+
pipeline_id: summary.pipelineID,
|
|
42
|
+
...(summary.name === undefined ? {} : { name: summary.name }),
|
|
43
|
+
command: summary.command,
|
|
44
|
+
manifest: `pipeline manifest ${summary.command}`,
|
|
45
|
+
}, { noRefs: true, lineWidth: -1 });
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=binEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binEntry.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/binEntry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAW3C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,OAAO,GAA4B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,SAAS,CAAmB,MAAM,CAAC,CAAC;IACnE,MAAM,KAAK,GAA+B,MAAM,EAAE,IAAI,CAAC,IAAI,CACzD,CAAC,SAAyB,EAAW,EAAE,CACrC,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAClE,CAAC;IACF,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAExD,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,EAAE,KAAK,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA2B;IACnE,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,qBAAqB,OAAO,CAAC,OAAO,EAAE;KACjD,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/static.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../../../src/lib/vfs/providers/static.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
import { Ok, Err, errorStack,
|
|
9
|
+
import { Ok, Err, errorStack, items_get } from '@fnndsc/cumin';
|
|
10
10
|
import { commandHelp_get } from '../../../builtins/help.js';
|
|
11
|
-
import { pipeline_sourceGet } from '@fnndsc/salsa';
|
|
12
11
|
import chalk from 'chalk';
|
|
13
12
|
import { session } from '../../../session/index.js';
|
|
13
|
+
import { binPipelineSummary_render, binPipelineSummary_try, } from './binEntry.js';
|
|
14
14
|
/**
|
|
15
15
|
* Formats a plugin parameter list into a beautifully aligned text manual.
|
|
16
16
|
*
|
|
@@ -70,34 +70,6 @@ function pluginParameters_render(plugin, parameters, command) {
|
|
|
70
70
|
lines.push('');
|
|
71
71
|
return lines.join('\n');
|
|
72
72
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Renders a brief info block for a pipeline that has no registered YAML source.
|
|
75
|
-
*
|
|
76
|
-
* @param pipeline - The resolved PipelineRecord.
|
|
77
|
-
* @returns Formatted summary string.
|
|
78
|
-
*/
|
|
79
|
-
function pipelineSummary_render(pipeline) {
|
|
80
|
-
const lines = [];
|
|
81
|
-
lines.push('');
|
|
82
|
-
lines.push(chalk.bold.magenta(pipeline.name));
|
|
83
|
-
lines.push(chalk.gray('─'.repeat(74)));
|
|
84
|
-
lines.push(`${chalk.bold.blue('ID:')} ${pipeline.id}`);
|
|
85
|
-
if (pipeline.authors)
|
|
86
|
-
lines.push(`${chalk.bold.blue('Authors:')} ${pipeline.authors}`);
|
|
87
|
-
if (pipeline.category)
|
|
88
|
-
lines.push(`${chalk.bold.blue('Category:')} ${pipeline.category}`);
|
|
89
|
-
if (pipeline.locked !== undefined)
|
|
90
|
-
lines.push(`${chalk.bold.blue('Locked:')} ${pipeline.locked}`);
|
|
91
|
-
if (pipeline.description) {
|
|
92
|
-
lines.push('');
|
|
93
|
-
lines.push(chalk.bold.blue('DESCRIPTION'));
|
|
94
|
-
lines.push(` ${pipeline.description}`);
|
|
95
|
-
}
|
|
96
|
-
lines.push('');
|
|
97
|
-
lines.push(chalk.dim('No YAML source registered. Use `pipeline info <name>` for full DAG details.'));
|
|
98
|
-
lines.push('');
|
|
99
|
-
return lines.join('\n');
|
|
100
|
-
}
|
|
101
73
|
/**
|
|
102
74
|
* Reads virtual file content under command and builtin static paths.
|
|
103
75
|
*
|
|
@@ -124,14 +96,11 @@ export async function staticVfs_read(pathStr, prefix) {
|
|
|
124
96
|
}
|
|
125
97
|
if (prefix === "/bin") {
|
|
126
98
|
const commandName = effectivePath.substring("/bin/".length);
|
|
99
|
+
const pipelineSummary = binPipelineSummary_try(commandName);
|
|
100
|
+
if (pipelineSummary !== null)
|
|
101
|
+
return Ok(binPipelineSummary_render(pipelineSummary));
|
|
127
102
|
const versionSeparatorIndex = commandName.lastIndexOf('-v');
|
|
128
103
|
if (versionSeparatorIndex === -1) {
|
|
129
|
-
const yamlResult = await pipeline_sourceGet(commandName);
|
|
130
|
-
if (yamlResult.ok)
|
|
131
|
-
return Ok(yamlResult.value);
|
|
132
|
-
const resolveResult = await pipeline_resolve(commandName);
|
|
133
|
-
if (resolveResult.ok)
|
|
134
|
-
return Ok(pipelineSummary_render(resolveResult.value));
|
|
135
104
|
errorStack.stack_push("error", `Unknown /bin entry: ${commandName}`);
|
|
136
105
|
return Err();
|
|
137
106
|
}
|
|
@@ -143,8 +112,8 @@ export async function staticVfs_read(pathStr, prefix) {
|
|
|
143
112
|
return Err();
|
|
144
113
|
}
|
|
145
114
|
const pluginsList = await client.getPlugins({ name_exact: name, version: version, limit: 1 });
|
|
146
|
-
const plugins = pluginsList
|
|
147
|
-
if (
|
|
115
|
+
const plugins = items_get(pluginsList);
|
|
116
|
+
if (plugins.length === 0) {
|
|
148
117
|
errorStack.stack_push("error", `Plugin not found on server: ${name} v${version}`);
|
|
149
118
|
return Err();
|
|
150
119
|
}
|