@fnndsc/brasa 0.1.0 → 0.2.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.
- package/dist/builtins/fs/du.d.ts +2 -1
- package/dist/builtins/fs/du.js +15 -7
- package/dist/builtins/fs/du.js.map +1 -1
- package/dist/builtins/fs/ls.d.ts +2 -1
- package/dist/builtins/fs/ls.js +22 -11
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/tree.d.ts +2 -1
- package/dist/builtins/fs/tree.js +10 -13
- package/dist/builtins/fs/tree.js.map +1 -1
- package/dist/builtins/help.d.ts +16 -1
- package/dist/builtins/help.js +39 -18
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/net/cubepath.d.ts +2 -1
- package/dist/builtins/net/cubepath.js +19 -15
- package/dist/builtins/net/cubepath.js.map +1 -1
- package/dist/builtins/net/logout.d.ts +4 -2
- package/dist/builtins/net/logout.js +7 -4
- package/dist/builtins/net/logout.js.map +1 -1
- package/dist/builtins/net/query.d.ts +2 -2
- package/dist/builtins/net/query.js +20 -23
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/parametersofplugin.d.ts +3 -2
- package/dist/builtins/parametersofplugin.js +8 -9
- package/dist/builtins/parametersofplugin.js.map +1 -1
- package/dist/builtins/proc.d.ts +3 -1
- package/dist/builtins/proc.js +74 -64
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/compute.d.ts +3 -1
- package/dist/builtins/res/compute.js +9 -12
- package/dist/builtins/res/compute.js.map +1 -1
- package/dist/builtins/res/feed.d.ts +3 -1
- package/dist/builtins/res/feed.js +58 -83
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/files.d.ts +7 -3
- package/dist/builtins/res/files.js +26 -25
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/group.d.ts +3 -1
- package/dist/builtins/res/group.js +10 -14
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/plugin.d.ts +6 -2
- package/dist/builtins/res/plugin.js +47 -50
- package/dist/builtins/res/plugin.js.map +1 -1
- package/dist/builtins/res/plugininstance.d.ts +2 -1
- package/dist/builtins/res/plugininstance.js +9 -14
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.d.ts +2 -1
- package/dist/builtins/res/pluginmeta.js +9 -14
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/tag.d.ts +3 -1
- package/dist/builtins/res/tag.js +10 -14
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/workflow.d.ts +2 -1
- package/dist/builtins/res/workflow.js +9 -14
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/sys/context.d.ts +2 -1
- package/dist/builtins/sys/context.js +5 -4
- package/dist/builtins/sys/context.js.map +1 -1
- package/dist/core/dispatch.d.ts +6 -0
- package/dist/core/dispatch.js +77 -85
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/sink.d.ts +0 -18
- package/dist/core/sink.js +0 -77
- package/dist/core/sink.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +2 -2
- package/dist/lib/vfs/vfs.js +10 -14
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/package.json +2 -2
|
@@ -14,44 +14,46 @@ import { join } from 'path';
|
|
|
14
14
|
import { feed_noteGet, feed_noteUpdate } from '@fnndsc/chili/commands/feed/note.js';
|
|
15
15
|
import { feed_commentsList, feed_commentCreate, feed_commentDelete, feed_commentUpdate } from '@fnndsc/chili/commands/feed/comments.js';
|
|
16
16
|
import { feedList_render, feedCreate_render, feedNote_render, feedComments_render } from '@fnndsc/chili/views/feed.js';
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
18
|
+
import { envelope_ok, envelope_error } from '@fnndsc/cumin';
|
|
19
19
|
import { noteEditBody_format, noteEditBody_parse } from './feed.notes.js';
|
|
20
20
|
/**
|
|
21
21
|
* Handles `feed list`: fetches and renders the feed table.
|
|
22
22
|
*
|
|
23
23
|
* @param parsed - The parsed command arguments.
|
|
24
|
+
* @returns An envelope carrying the rendered feed table.
|
|
24
25
|
*/
|
|
25
26
|
async function feedList_handle(parsed) {
|
|
26
27
|
const { feeds, selectedFields, totalCount } = await feeds_fetchList(parsed);
|
|
27
|
-
|
|
28
|
+
let rendered = `${feedList_render(feeds, selectedFields, { table: !!parsed.table, csv: !!parsed.csv })}\n`;
|
|
28
29
|
if (totalCount !== undefined && feeds.length < totalCount) {
|
|
29
|
-
|
|
30
|
+
rendered += `${chalk.dim(` ↓ showing ${feeds.length} of ${totalCount} · --all to fetch all · --limit <n> for page size`)}\n`;
|
|
30
31
|
}
|
|
32
|
+
return envelope_ok(rendered);
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* Handles `feed inspect`: lists the available feed fields.
|
|
36
|
+
*
|
|
37
|
+
* @returns An envelope carrying the field listing.
|
|
34
38
|
*/
|
|
35
39
|
async function feedInspect_handle() {
|
|
36
40
|
const fields = await feedFields_fetch();
|
|
37
41
|
if (fields && fields.length > 0) {
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
console.log(chalk.gray('No fields found.'));
|
|
42
|
+
return envelope_ok(table_render(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Feed fields', justification: 'center' } }));
|
|
42
43
|
}
|
|
44
|
+
return envelope_ok(`${chalk.gray('No fields found.')}\n`);
|
|
43
45
|
}
|
|
44
46
|
/**
|
|
45
47
|
* Edits a feed note interactively via `$EDITOR`.
|
|
46
48
|
*
|
|
47
49
|
* @param feedId - The feed whose note is edited.
|
|
50
|
+
* @returns An envelope carrying the edit outcome.
|
|
48
51
|
*/
|
|
49
52
|
async function feedNote_edit(feedId) {
|
|
50
53
|
const getResult = await feed_noteGet(feedId);
|
|
51
54
|
if (!getResult.ok) {
|
|
52
55
|
process.exitCode = 1;
|
|
53
|
-
|
|
54
|
-
return;
|
|
56
|
+
return envelope_error('', undefined, `${chalk.red(`Failed to get note for feed ${feedId}.`)}\n`);
|
|
55
57
|
}
|
|
56
58
|
const note = getResult.value;
|
|
57
59
|
const tmpPath = join(tmpdir(), `chell-note-${feedId}-${Date.now()}.txt`);
|
|
@@ -66,38 +68,33 @@ async function feedNote_edit(feedId) {
|
|
|
66
68
|
}
|
|
67
69
|
catch { /* ignore */ }
|
|
68
70
|
if (edited === body) {
|
|
69
|
-
|
|
70
|
-
return;
|
|
71
|
+
return envelope_ok(`${chalk.gray('(no changes)')}\n`);
|
|
71
72
|
}
|
|
72
73
|
const { title, content } = noteEditBody_parse(edited, note.title);
|
|
73
74
|
const updateResult = await feed_noteUpdate(feedId, { title, content });
|
|
74
75
|
if (updateResult.ok)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
console.error(chalk.red('Failed to save note.'));
|
|
79
|
-
}
|
|
76
|
+
return envelope_ok(`${chalk.green(`Note updated on feed ${feedId}.`)}\n`);
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
return envelope_error('', undefined, `${chalk.red('Failed to save note.')}\n`);
|
|
80
79
|
}
|
|
81
80
|
/**
|
|
82
81
|
* Handles `feed note ...`: interactive edit, direct update, or display.
|
|
83
82
|
*
|
|
84
83
|
* @param parsed - The parsed command arguments.
|
|
84
|
+
* @returns An envelope carrying the note or update outcome.
|
|
85
85
|
*/
|
|
86
86
|
async function feedNote_handle(parsed) {
|
|
87
87
|
const second = String(parsed._[1] ?? '');
|
|
88
88
|
if (second === 'edit') {
|
|
89
89
|
const feedId = parseInt(String(parsed._[2]), 10);
|
|
90
90
|
if (isNaN(feedId)) {
|
|
91
|
-
|
|
92
|
-
return;
|
|
91
|
+
return envelope_error('', undefined, `${chalk.red('Usage: feed note edit <feedId>')}\n`);
|
|
93
92
|
}
|
|
94
|
-
|
|
95
|
-
return;
|
|
93
|
+
return feedNote_edit(feedId);
|
|
96
94
|
}
|
|
97
95
|
const feedId = parseInt(second, 10);
|
|
98
96
|
if (isNaN(feedId)) {
|
|
99
|
-
|
|
100
|
-
return;
|
|
97
|
+
return envelope_error('', undefined, `${chalk.red('Usage: feed note <feedId> [--title <t>] [--content <c>] | feed note edit <feedId>')}\n`);
|
|
101
98
|
}
|
|
102
99
|
const hasUpdate = !!(parsed.title || parsed.content);
|
|
103
100
|
if (hasUpdate) {
|
|
@@ -106,33 +103,27 @@ async function feedNote_handle(parsed) {
|
|
|
106
103
|
content: parsed.content,
|
|
107
104
|
});
|
|
108
105
|
if (result.ok)
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
console.error(chalk.red('Failed to update note.'));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const result = await feed_noteGet(feedId);
|
|
117
|
-
if (result.ok)
|
|
118
|
-
console.log(feedNote_render(result.value, feedId));
|
|
119
|
-
else {
|
|
120
|
-
process.exitCode = 1;
|
|
121
|
-
console.error(chalk.red(`Failed to get note for feed ${feedId}.`));
|
|
122
|
-
}
|
|
106
|
+
return envelope_ok(`${chalk.green(`Note updated on feed ${feedId}.`)}\n`);
|
|
107
|
+
process.exitCode = 1;
|
|
108
|
+
return envelope_error('', undefined, `${chalk.red('Failed to update note.')}\n`);
|
|
123
109
|
}
|
|
110
|
+
const result = await feed_noteGet(feedId);
|
|
111
|
+
if (result.ok)
|
|
112
|
+
return envelope_ok(`${feedNote_render(result.value, feedId)}\n`);
|
|
113
|
+
process.exitCode = 1;
|
|
114
|
+
return envelope_error('', undefined, `${chalk.red(`Failed to get note for feed ${feedId}.`)}\n`);
|
|
124
115
|
}
|
|
125
116
|
/**
|
|
126
117
|
* Handles `feed comment <add|delete|edit> ...`.
|
|
127
118
|
*
|
|
128
119
|
* @param parsed - The parsed command arguments.
|
|
120
|
+
* @returns An envelope carrying the comment operation outcome.
|
|
129
121
|
*/
|
|
130
122
|
async function feedComment_handle(parsed) {
|
|
131
123
|
const op = parsed._[1] ?? '';
|
|
132
124
|
const feedId = parseInt(String(parsed._[2]), 10);
|
|
133
125
|
if (!op || isNaN(feedId)) {
|
|
134
|
-
|
|
135
|
-
return;
|
|
126
|
+
return envelope_error('', undefined, `${chalk.red('Usage: feed comment <add|delete|edit> <feedId> [commentId] [--title <t>] [--content <c>]')}\n`);
|
|
136
127
|
}
|
|
137
128
|
if (op === 'add') {
|
|
138
129
|
const result = await feed_commentCreate(feedId, {
|
|
@@ -140,105 +131,89 @@ async function feedComment_handle(parsed) {
|
|
|
140
131
|
content: parsed.content,
|
|
141
132
|
});
|
|
142
133
|
if (result.ok)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
console.error(chalk.red('Failed to add comment.'));
|
|
147
|
-
}
|
|
134
|
+
return envelope_ok(`${chalk.green(`Comment added (id: ${result.value.id}) on feed ${feedId}.`)}\n`);
|
|
135
|
+
process.exitCode = 1;
|
|
136
|
+
return envelope_error('', undefined, `${chalk.red('Failed to add comment.')}\n`);
|
|
148
137
|
}
|
|
149
138
|
else if (op === 'delete') {
|
|
150
139
|
const commentId = parseInt(String(parsed._[3]), 10);
|
|
151
140
|
if (isNaN(commentId)) {
|
|
152
|
-
|
|
153
|
-
return;
|
|
141
|
+
return envelope_error('', undefined, `${chalk.red('Usage: feed comment delete <feedId> <commentId>')}\n`);
|
|
154
142
|
}
|
|
155
143
|
const result = await feed_commentDelete(feedId, commentId);
|
|
156
144
|
if (result.ok)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
console.error(chalk.red('Failed to delete comment.'));
|
|
161
|
-
}
|
|
145
|
+
return envelope_ok(`${chalk.green(`Comment ${commentId} deleted.`)}\n`);
|
|
146
|
+
process.exitCode = 1;
|
|
147
|
+
return envelope_error('', undefined, `${chalk.red('Failed to delete comment.')}\n`);
|
|
162
148
|
}
|
|
163
149
|
else if (op === 'edit') {
|
|
164
150
|
const commentId = parseInt(String(parsed._[3]), 10);
|
|
165
151
|
if (isNaN(commentId)) {
|
|
166
|
-
|
|
167
|
-
return;
|
|
152
|
+
return envelope_error('', undefined, `${chalk.red('Usage: feed comment edit <feedId> <commentId> [--title <t>] [--content <c>]')}\n`);
|
|
168
153
|
}
|
|
169
154
|
const result = await feed_commentUpdate(feedId, commentId, {
|
|
170
155
|
title: parsed.title,
|
|
171
156
|
content: parsed.content,
|
|
172
157
|
});
|
|
173
158
|
if (result.ok)
|
|
174
|
-
|
|
175
|
-
else {
|
|
176
|
-
process.exitCode = 1;
|
|
177
|
-
console.error(chalk.red('Failed to update comment.'));
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
console.error(chalk.red(`Unknown comment op: ${op}. Use add, delete, or edit.`));
|
|
159
|
+
return envelope_ok(`${chalk.green(`Comment ${commentId} updated.`)}\n`);
|
|
182
160
|
process.exitCode = 1;
|
|
161
|
+
return envelope_error('', undefined, `${chalk.red('Failed to update comment.')}\n`);
|
|
183
162
|
}
|
|
163
|
+
process.exitCode = 1;
|
|
164
|
+
return envelope_error('', undefined, `${chalk.red(`Unknown comment op: ${op}. Use add, delete, or edit.`)}\n`);
|
|
184
165
|
}
|
|
185
166
|
/**
|
|
186
167
|
* Handles feed commands.
|
|
187
168
|
*
|
|
188
169
|
* @param args - command arguments.
|
|
170
|
+
* @returns An envelope carrying the rendered feed output.
|
|
189
171
|
*/
|
|
190
172
|
export async function builtin_feed(args) {
|
|
191
173
|
const parsed = commandArgs_process(args);
|
|
192
174
|
const subcommand = parsed._[0];
|
|
193
175
|
if (!subcommand) {
|
|
194
|
-
|
|
195
|
-
return;
|
|
176
|
+
return envelope_ok(`${chalk.red("Usage: feed <list|create> ...")}\n`);
|
|
196
177
|
}
|
|
197
178
|
try {
|
|
198
179
|
if (subcommand === 'list') {
|
|
199
|
-
await feedList_handle(parsed);
|
|
180
|
+
return await feedList_handle(parsed);
|
|
200
181
|
}
|
|
201
182
|
else if (subcommand === 'create') {
|
|
202
183
|
const feed = await feed_create(parsed);
|
|
203
|
-
|
|
204
|
-
console.log(feedCreate_render(feed));
|
|
205
|
-
}
|
|
184
|
+
return envelope_ok(feed ? `${feedCreate_render(feed)}\n` : '');
|
|
206
185
|
}
|
|
207
186
|
else if (subcommand === 'inspect') {
|
|
208
|
-
await feedInspect_handle();
|
|
187
|
+
return await feedInspect_handle();
|
|
209
188
|
}
|
|
210
189
|
else if (subcommand === 'search') {
|
|
211
190
|
const query = parsed._[1] ?? '';
|
|
212
|
-
await builtin_feed(['list', '--search', query]);
|
|
191
|
+
return await builtin_feed(['list', '--search', query]);
|
|
213
192
|
}
|
|
214
193
|
else if (subcommand === 'note') {
|
|
215
|
-
await feedNote_handle(parsed);
|
|
194
|
+
return await feedNote_handle(parsed);
|
|
216
195
|
}
|
|
217
196
|
else if (subcommand === 'comments') {
|
|
218
197
|
const feedId = parseInt(String(parsed._[1]), 10);
|
|
219
198
|
if (isNaN(feedId)) {
|
|
220
|
-
|
|
221
|
-
return;
|
|
199
|
+
return envelope_error('', undefined, `${chalk.red('Usage: feed comments <feedId>')}\n`);
|
|
222
200
|
}
|
|
223
201
|
const result = await feed_commentsList(feedId);
|
|
224
202
|
if (result.ok)
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
console.error(chalk.red(`Failed to list comments for feed ${feedId}.`));
|
|
229
|
-
}
|
|
203
|
+
return envelope_ok(`${feedComments_render(result.value, feedId)}\n`);
|
|
204
|
+
process.exitCode = 1;
|
|
205
|
+
return envelope_error('', undefined, `${chalk.red(`Failed to list comments for feed ${feedId}.`)}\n`);
|
|
230
206
|
}
|
|
231
207
|
else if (subcommand === 'comment') {
|
|
232
|
-
await feedComment_handle(parsed);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
console.log(chalk.yellow('Directive not handled by chell... spawning chili directly'));
|
|
236
|
-
await chiliCommand_run('feeds', ['-s', ...args]);
|
|
208
|
+
return await feedComment_handle(parsed);
|
|
237
209
|
}
|
|
210
|
+
process.exitCode = 1;
|
|
211
|
+
return envelope_error('', undefined, `${chalk.red(`Unknown subcommand: ${subcommand}. Usage: feed <list|create|inspect|search|note|comments|comment>`)}\n`);
|
|
238
212
|
}
|
|
239
213
|
catch (e) {
|
|
240
214
|
const msg = e instanceof Error ? e.message : String(e);
|
|
241
|
-
|
|
215
|
+
process.exitCode = 1;
|
|
216
|
+
return envelope_error('', undefined, `${chalk.red(`Feed error: ${msg}`)}\n`);
|
|
242
217
|
}
|
|
243
218
|
}
|
|
244
219
|
//# sourceMappingURL=feed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed.js","sourceRoot":"","sources":["../../../src/builtins/res/feed.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAkB,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAExI,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"feed.js","sourceRoot":"","sources":["../../../src/builtins/res/feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
import { type CommandEnvelope } from '@fnndsc/cumin';
|
|
1
2
|
/**
|
|
2
3
|
* Handles files commands.
|
|
3
4
|
*
|
|
4
5
|
* @param args - command arguments.
|
|
6
|
+
* @returns An envelope carrying the files listing or fields.
|
|
5
7
|
*/
|
|
6
|
-
export declare function builtin_files(args: string[]): Promise<
|
|
8
|
+
export declare function builtin_files(args: string[]): Promise<CommandEnvelope>;
|
|
7
9
|
/**
|
|
8
10
|
* Handles links commands.
|
|
9
11
|
*
|
|
10
12
|
* @param args - command arguments.
|
|
13
|
+
* @returns An envelope carrying the links listing or fields.
|
|
11
14
|
*/
|
|
12
|
-
export declare function builtin_links(args: string[]): Promise<
|
|
15
|
+
export declare function builtin_links(args: string[]): Promise<CommandEnvelope>;
|
|
13
16
|
/**
|
|
14
17
|
* Handles dirs commands.
|
|
15
18
|
*
|
|
16
19
|
* @param args - command arguments.
|
|
20
|
+
* @returns An envelope carrying the dirs listing or fields.
|
|
17
21
|
*/
|
|
18
|
-
export declare function builtin_dirs(args: string[]): Promise<
|
|
22
|
+
export declare function builtin_dirs(args: string[]): Promise<CommandEnvelope>;
|
|
@@ -6,80 +6,81 @@ import chalk from 'chalk';
|
|
|
6
6
|
import { commandArgs_process } from '../utils.js';
|
|
7
7
|
import { files_fetchList } from '@fnndsc/chili/commands/files/list.js';
|
|
8
8
|
import { fileFields_fetch } from '@fnndsc/chili/commands/files/fields.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { envelope_ok, envelope_error } from '@fnndsc/cumin';
|
|
10
|
+
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
11
11
|
/**
|
|
12
12
|
* Generic handler for file group commands (files, links, dirs).
|
|
13
13
|
*
|
|
14
14
|
* @param args - command arguments.
|
|
15
15
|
* @param assetName - the asset type ('files', 'links', 'dirs').
|
|
16
|
+
* @returns An envelope carrying the listing or fields.
|
|
16
17
|
*/
|
|
17
18
|
async function builtin_fileGroup(args, assetName) {
|
|
18
19
|
const parsed = commandArgs_process(args);
|
|
19
20
|
const subcommand = parsed._[0];
|
|
20
21
|
if (!subcommand) {
|
|
21
|
-
|
|
22
|
-
return;
|
|
22
|
+
return envelope_ok(`${chalk.red(`Usage: ${assetName} <list|search|inspect> ...`)}\n`);
|
|
23
23
|
}
|
|
24
24
|
try {
|
|
25
25
|
if (subcommand === 'list') {
|
|
26
26
|
const path = parsed._[1];
|
|
27
27
|
const results = await files_fetchList(parsed, assetName, path);
|
|
28
28
|
if (!results) {
|
|
29
|
-
|
|
30
|
-
return;
|
|
29
|
+
return envelope_error('', undefined, `No ${assetName} resources found. Perhaps check your current context?\n`);
|
|
31
30
|
}
|
|
32
31
|
if (results.tableData.length === 0) {
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
table_display(results.tableData, results.selectedFields, {
|
|
37
|
-
title: { title: assetName, justification: "center" },
|
|
38
|
-
pagination: results.totalCount !== undefined ? { shown: results.tableData.length, total: results.totalCount } : undefined,
|
|
39
|
-
});
|
|
32
|
+
return envelope_ok(`No ${assetName} found matching the criteria.\n`);
|
|
40
33
|
}
|
|
34
|
+
return envelope_ok(table_render(results.tableData, results.selectedFields, {
|
|
35
|
+
title: { title: assetName, justification: "center" },
|
|
36
|
+
pagination: results.totalCount !== undefined ? { shown: results.tableData.length, total: results.totalCount } : undefined,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
else if (subcommand === 'search') {
|
|
40
|
+
const query = parsed._[1] ?? '';
|
|
41
|
+
return builtin_fileGroup([...args.filter((a) => a !== subcommand), '--search', query], assetName);
|
|
41
42
|
}
|
|
42
43
|
else if (subcommand === 'inspect' || subcommand === 'fieldslist') {
|
|
43
44
|
const fields = await fileFields_fetch(assetName);
|
|
44
45
|
if (fields && fields.length > 0) {
|
|
45
|
-
|
|
46
|
+
return envelope_ok(table_render(fields.map(f => ({ fields: f })), ["fields"]));
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
-
console.log(`No resource fields found for ${assetName}.`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
console.log(chalk.yellow('Directive not handled by chell... spawning chili directly'));
|
|
53
|
-
await chiliCommand_run(assetName, ['-s', ...args]);
|
|
48
|
+
return envelope_ok(`No resource fields found for ${assetName}.\n`);
|
|
54
49
|
}
|
|
50
|
+
process.exitCode = 1;
|
|
51
|
+
return envelope_error(`${chalk.yellow(`Unknown subcommand: ${subcommand}. Usage: ${assetName} <list|search|inspect>`)}\n`);
|
|
55
52
|
}
|
|
56
53
|
catch (e) {
|
|
57
54
|
const msg = e instanceof Error ? e.message : String(e);
|
|
58
|
-
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
return envelope_error('', undefined, `${chalk.red(`${assetName} error: ${msg}`)}\n`);
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
/**
|
|
62
60
|
* Handles files commands.
|
|
63
61
|
*
|
|
64
62
|
* @param args - command arguments.
|
|
63
|
+
* @returns An envelope carrying the files listing or fields.
|
|
65
64
|
*/
|
|
66
65
|
export async function builtin_files(args) {
|
|
67
|
-
|
|
66
|
+
return builtin_fileGroup(args, 'files');
|
|
68
67
|
}
|
|
69
68
|
/**
|
|
70
69
|
* Handles links commands.
|
|
71
70
|
*
|
|
72
71
|
* @param args - command arguments.
|
|
72
|
+
* @returns An envelope carrying the links listing or fields.
|
|
73
73
|
*/
|
|
74
74
|
export async function builtin_links(args) {
|
|
75
|
-
|
|
75
|
+
return builtin_fileGroup(args, 'links');
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
78
|
* Handles dirs commands.
|
|
79
79
|
*
|
|
80
80
|
* @param args - command arguments.
|
|
81
|
+
* @returns An envelope carrying the dirs listing or fields.
|
|
81
82
|
*/
|
|
82
83
|
export async function builtin_dirs(args) {
|
|
83
|
-
|
|
84
|
+
return builtin_fileGroup(args, 'dirs');
|
|
84
85
|
}
|
|
85
86
|
//# sourceMappingURL=files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/builtins/res/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/builtins/res/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { CommandEnvelope } from '@fnndsc/cumin';
|
|
1
2
|
/**
|
|
2
3
|
* Builtin handler for the `group` command.
|
|
3
4
|
*
|
|
4
5
|
* @param args - Parsed command arguments for the group command.
|
|
6
|
+
* @returns An envelope carrying the group listing or fields.
|
|
5
7
|
*/
|
|
6
|
-
export declare function builtin_group(args: string[]): Promise<
|
|
8
|
+
export declare function builtin_group(args: string[]): Promise<CommandEnvelope>;
|
|
@@ -6,14 +6,16 @@
|
|
|
6
6
|
* Singular/plural aliases: group / groups
|
|
7
7
|
*/
|
|
8
8
|
import chalk from 'chalk';
|
|
9
|
+
import { envelope_ok, envelope_error } from '@fnndsc/cumin';
|
|
9
10
|
import { commandArgs_process } from '../utils.js';
|
|
10
11
|
import { groups_fetchList } from '@fnndsc/chili/commands/groups/list.js';
|
|
11
12
|
import { groupFields_fetch } from '@fnndsc/chili/commands/groups/fields.js';
|
|
12
|
-
import {
|
|
13
|
+
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
13
14
|
/**
|
|
14
15
|
* Builtin handler for the `group` command.
|
|
15
16
|
*
|
|
16
17
|
* @param args - Parsed command arguments for the group command.
|
|
18
|
+
* @returns An envelope carrying the group listing or fields.
|
|
17
19
|
*/
|
|
18
20
|
export async function builtin_group(args) {
|
|
19
21
|
const parsed = commandArgs_process(args);
|
|
@@ -22,33 +24,27 @@ export async function builtin_group(args) {
|
|
|
22
24
|
try {
|
|
23
25
|
const { groups, selectedFields, totalCount } = await groups_fetchList(parsed);
|
|
24
26
|
if (groups.length === 0) {
|
|
25
|
-
|
|
26
|
-
return;
|
|
27
|
+
return envelope_ok(`${chalk.gray('No groups found.')}\n`);
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
+
return envelope_ok(table_render(groups, selectedFields, { title: { title: 'Groups', justification: 'center' }, pagination: totalCount !== undefined ? { shown: groups.length, total: totalCount } : undefined }));
|
|
29
30
|
}
|
|
30
31
|
catch (e) {
|
|
31
32
|
process.exitCode = 1;
|
|
32
|
-
|
|
33
|
+
return envelope_error('', undefined, `${chalk.red(`group error: ${e instanceof Error ? e.message : String(e)}`)}\n`);
|
|
33
34
|
}
|
|
34
|
-
return;
|
|
35
35
|
}
|
|
36
36
|
if (subcommand === 'search') {
|
|
37
37
|
const query = parsed._[1] ?? '';
|
|
38
|
-
|
|
39
|
-
return;
|
|
38
|
+
return builtin_group([...args.filter((a) => a !== subcommand), `--search`, query]);
|
|
40
39
|
}
|
|
41
40
|
if (subcommand === 'inspect') {
|
|
42
41
|
const fields = await groupFields_fetch();
|
|
43
42
|
if (fields && fields.length > 0) {
|
|
44
|
-
|
|
43
|
+
return envelope_ok(table_render(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Group fields', justification: 'center' } }));
|
|
45
44
|
}
|
|
46
|
-
|
|
47
|
-
console.log(chalk.gray('No fields found for groups.'));
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
45
|
+
return envelope_ok(`${chalk.gray('No fields found for groups.')}\n`);
|
|
50
46
|
}
|
|
51
47
|
process.exitCode = 1;
|
|
52
|
-
|
|
48
|
+
return envelope_error(`${chalk.red(`Unknown subcommand: ${subcommand}. Usage: groups <list|search|inspect>`)}\n`);
|
|
53
49
|
}
|
|
54
50
|
//# sourceMappingURL=group.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/builtins/res/group.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../src/builtins/res/group.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { ParsedArgs } from '../utils.js';
|
|
2
|
+
import { type CommandEnvelope } from '@fnndsc/cumin';
|
|
2
3
|
/**
|
|
3
4
|
* Handles plugin commands.
|
|
4
5
|
*
|
|
5
6
|
* @param args - command arguments.
|
|
7
|
+
* @returns An envelope carrying the rendered plugin output.
|
|
6
8
|
*/
|
|
7
|
-
export declare function builtin_plugin(args: string[]): Promise<
|
|
9
|
+
export declare function builtin_plugin(args: string[]): Promise<CommandEnvelope>;
|
|
8
10
|
/**
|
|
9
11
|
* Interactive plugin add command with spinner and colored output.
|
|
10
12
|
*
|
|
11
13
|
* @param parsed - Parsed command arguments.
|
|
14
|
+
* @returns An envelope carrying the add outcome. The spinner streams live via
|
|
15
|
+
* the status channel; the result summary is carried in the envelope.
|
|
12
16
|
*/
|
|
13
|
-
export declare function plugin_addInteractive(parsed: ParsedArgs): Promise<
|
|
17
|
+
export declare function plugin_addInteractive(parsed: ParsedArgs): Promise<CommandEnvelope>;
|