@fnndsc/brasa 0.29.1 → 0.31.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/api/models.d.ts +2 -0
- package/dist/api/models.js.map +1 -1
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/fs/acl.args.d.ts +53 -18
- package/dist/builtins/fs/acl.args.js +77 -34
- package/dist/builtins/fs/acl.args.js.map +1 -1
- package/dist/builtins/fs/acl.d.ts +16 -5
- package/dist/builtins/fs/acl.js +111 -39
- package/dist/builtins/fs/acl.js.map +1 -1
- package/dist/builtins/fs/cd.js +38 -9
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/edit.d.ts +2 -0
- package/dist/builtins/fs/edit.js +52 -7
- package/dist/builtins/fs/edit.js.map +1 -1
- package/dist/builtins/fs/ls.js +3 -2
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/mkdir.js +48 -1
- package/dist/builtins/fs/mkdir.js.map +1 -1
- package/dist/builtins/fs/mv.js +11 -4
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/rm.d.ts +10 -0
- package/dist/builtins/fs/rm.js +28 -0
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/rmdir.d.ts +24 -0
- package/dist/builtins/fs/rmdir.js +110 -0
- package/dist/builtins/fs/rmdir.js.map +1 -0
- package/dist/builtins/fs/touch.js +3 -2
- package/dist/builtins/fs/touch.js.map +1 -1
- package/dist/builtins/fs/xattr.args.d.ts +52 -0
- package/dist/builtins/fs/xattr.args.js +134 -0
- package/dist/builtins/fs/xattr.args.js.map +1 -0
- package/dist/builtins/fs/xattr.d.ts +26 -0
- package/dist/builtins/fs/xattr.js +98 -0
- package/dist/builtins/fs/xattr.js.map +1 -0
- package/dist/builtins/help.js +86 -19
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/index.d.ts +2 -0
- package/dist/builtins/index.js +2 -0
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/net/netstat.d.ts +18 -0
- package/dist/builtins/net/netstat.js +78 -0
- package/dist/builtins/net/netstat.js.map +1 -0
- package/dist/builtins/proc.js +25 -2
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/feed.js +12 -34
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/utils.js +2 -1
- package/dist/builtins/utils.js.map +1 -1
- package/dist/command-keys.js +1 -1
- package/dist/command-keys.js.map +1 -1
- package/dist/core/dispatch.js +12 -1
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/surface.d.ts +8 -0
- package/dist/core/surface.js.map +1 -1
- package/dist/lib/completer/index.js +1 -1
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/semicolonParser.d.ts +1 -0
- package/dist/lib/semicolonParser.js +14 -1
- package/dist/lib/semicolonParser.js.map +1 -1
- package/dist/lib/vfs/vfs.js +30 -3
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/package.json +5 -5
- package/dist/builtins/res/feed.notes.d.ts +0 -28
- package/dist/builtins/res/feed.notes.js +0 -24
- package/dist/builtins/res/feed.notes.js.map +0 -1
package/dist/builtins/fs/cd.js
CHANGED
|
@@ -6,7 +6,7 @@ import chalk from 'chalk';
|
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { session } from '../../session/index.js';
|
|
8
8
|
import { path_resolve, path_resolveLinks, error_stripDebugPrefix } from '../utils.js';
|
|
9
|
-
import { envelope_ok, envelope_error } from '@fnndsc/cumin';
|
|
9
|
+
import { envelope_ok, envelope_error, Ok, Err } from '@fnndsc/cumin';
|
|
10
10
|
/**
|
|
11
11
|
* Structural VFS container paths that exist by definition and need no API
|
|
12
12
|
* validation when `cd`-ing into them.
|
|
@@ -48,6 +48,28 @@ export function folder_verifyPathMatch(folder, validationPath) {
|
|
|
48
48
|
const cleanValidation = validationPath.replace(/^\/+|\/+$/g, '');
|
|
49
49
|
return cleanFolder === cleanValidation;
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* A parent's listing, from the cache when it holds one — the parent is
|
|
53
|
+
* almost always the listing on screen, and `cd` needs an entry's kind, not
|
|
54
|
+
* its freshest row, so a stale listing serves — and from CUBE only when the
|
|
55
|
+
* cache never held it. Every `cd` used to list the parent from CUBE (three
|
|
56
|
+
* requests) to learn whether the entry was a link.
|
|
57
|
+
*
|
|
58
|
+
* @param parentPath - The parent directory.
|
|
59
|
+
* @returns Its entries, or Err when it cannot be listed.
|
|
60
|
+
*/
|
|
61
|
+
async function parentListing_get(parentPath) {
|
|
62
|
+
const { listCache_get: cache_of } = await import('@fnndsc/cumin');
|
|
63
|
+
const kept = cache_of().cache_get(parentPath);
|
|
64
|
+
if (kept)
|
|
65
|
+
return Ok(kept.data);
|
|
66
|
+
// Through the listing façade, so what CUBE answers is cached for the
|
|
67
|
+
// next cd (and the ls that follows): listed live and uncached, the root
|
|
68
|
+
// was fetched again on every cd into /bin.
|
|
69
|
+
const { vfs } = await import('../../lib/vfs/vfs.js');
|
|
70
|
+
const listed = await vfs.listing_get(parentPath);
|
|
71
|
+
return listed.ok ? Ok(listed.value.items) : Err();
|
|
72
|
+
}
|
|
51
73
|
/**
|
|
52
74
|
* The target of a CFS link at a path, from its parent's listing; null when
|
|
53
75
|
* the path is not a link (or its parent cannot be listed).
|
|
@@ -58,8 +80,7 @@ export function folder_verifyPathMatch(folder, validationPath) {
|
|
|
58
80
|
export async function cfsLink_target(cleanPath) {
|
|
59
81
|
if (cleanPath === '/' || !cleanPath.startsWith('/'))
|
|
60
82
|
return null;
|
|
61
|
-
const
|
|
62
|
-
const parentResult = await vfsDispatcher.list(path.posix.dirname(cleanPath));
|
|
83
|
+
const parentResult = await parentListing_get(path.posix.dirname(cleanPath));
|
|
63
84
|
if (!parentResult.ok)
|
|
64
85
|
return null;
|
|
65
86
|
const entryName = path.posix.basename(cleanPath);
|
|
@@ -96,7 +117,7 @@ async function cdVirtual_handle(cleanPath, pathArg) {
|
|
|
96
117
|
const { vfsDispatcher } = await import('@fnndsc/salsa');
|
|
97
118
|
const parentPath = path.posix.dirname(cleanPath);
|
|
98
119
|
const entryName = path.posix.basename(cleanPath);
|
|
99
|
-
const parentResult = await
|
|
120
|
+
const parentResult = await parentListing_get(parentPath);
|
|
100
121
|
const entry = parentResult.ok
|
|
101
122
|
? parentResult.value.find((item) => item.name === entryName)
|
|
102
123
|
: undefined;
|
|
@@ -110,22 +131,30 @@ async function cdVirtual_handle(cleanPath, pathArg) {
|
|
|
110
131
|
if (!target) {
|
|
111
132
|
return envelope_error('', undefined, `${chalk.red(`cd: ${pathArg}: No such file or directory`)}\n`);
|
|
112
133
|
}
|
|
134
|
+
// A link may point into another projection (a tag's feed_N is a link to
|
|
135
|
+
// /proc/jobs/feed_N): that target is entered as the projection it is.
|
|
136
|
+
if (vfsDispatcher.path_isVirtual(target))
|
|
137
|
+
return cdVirtual_handle(vfsPath_normalize(target), pathArg);
|
|
113
138
|
return cdReal_handle(target, pathArg);
|
|
114
139
|
}
|
|
115
140
|
if (entry && !['dir', 'job', 'vfs'].includes(entry.type)) {
|
|
116
141
|
return envelope_error('', undefined, `${chalk.red(`cd: ${pathArg}: Not a directory`)}\n`);
|
|
117
142
|
}
|
|
118
|
-
// A directory-like VFS entry
|
|
119
|
-
//
|
|
120
|
-
|
|
143
|
+
// A directory-like VFS entry is listed to validate it and to prime the
|
|
144
|
+
// `ls` that follows — through the one listing façade, so the cache the
|
|
145
|
+
// boot warmed and `ls` fills serves at once: `cd /bin` used to fetch the
|
|
146
|
+
// whole of /bin from CUBE every time (plugins, pipelines, their sources;
|
|
147
|
+
// seconds) and then overwrite a cache that already held it. A stale
|
|
148
|
+
// entry is served and refreshed behind the prompt (listing_get), the
|
|
149
|
+
// way a stale `ls` is; a path the cache never held is listed as before.
|
|
150
|
+
const { vfs } = await import('../../lib/vfs/vfs.js');
|
|
151
|
+
const listResult = await vfs.listing_get(cleanPath);
|
|
121
152
|
if (!listResult.ok) {
|
|
122
153
|
const { errorStack } = await import('@fnndsc/cumin');
|
|
123
154
|
const lastError = errorStack.stack_pop();
|
|
124
155
|
const detail = lastError ? error_stripDebugPrefix(lastError.message) : 'No such file or directory';
|
|
125
156
|
return envelope_error('', undefined, `${chalk.red(`cd: ${pathArg}: ${detail}`)}\n`);
|
|
126
157
|
}
|
|
127
|
-
const { listCache_get } = await import('@fnndsc/cumin');
|
|
128
|
-
listCache_get().cache_set(cleanPath, listResult.value);
|
|
129
158
|
await session.directory_change(cleanPath);
|
|
130
159
|
return cdSuccess_envelope(cleanPath, '');
|
|
131
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cd.js","sourceRoot":"","sources":["../../../src/builtins/fs/cd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cd.js","sourceRoot":"","sources":["../../../src/builtins/fs/cd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type CommandEnvelope } from '@fnndsc/cumin';
|
|
2
|
+
/** What `edit` says when the surface opened an editor that stays open. */
|
|
3
|
+
export declare const EDIT_OPENED_LINE: string;
|
|
2
4
|
/**
|
|
3
5
|
* Opens a ChRIS file in the surface's local editor. On save, replaces the
|
|
4
6
|
* original via delete + re-upload. No-ops if content is unchanged.
|
package/dist/builtins/fs/edit.js
CHANGED
|
@@ -14,11 +14,9 @@ import { surface_get, capability_require, CapabilityError } from '../../core/sur
|
|
|
14
14
|
import { files_cat } from '@fnndsc/chili/commands/fs/cat.js';
|
|
15
15
|
import { file_replaceContent } from '@fnndsc/chili/commands/fs/edit.js';
|
|
16
16
|
import { errorStack, listCache_get, envelope_ok, envelope_error } from '@fnndsc/cumin';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
'.exe', '.dll', '.so', '.bin', '.mp3', '.mp4', '.avi', '.wav',
|
|
21
|
-
]);
|
|
17
|
+
import { path_isEditable } from '@fnndsc/menu';
|
|
18
|
+
/** What `edit` says when the surface opened an editor that stays open. */
|
|
19
|
+
export const EDIT_OPENED_LINE = '(opened in the editor)';
|
|
22
20
|
/**
|
|
23
21
|
* Opens a ChRIS file in the surface's local editor. On save, replaces the
|
|
24
22
|
* original via delete + re-upload. No-ops if content is unchanged.
|
|
@@ -44,10 +42,15 @@ export async function builtin_edit(args) {
|
|
|
44
42
|
}
|
|
45
43
|
const target = await path_resolve(args[0]);
|
|
46
44
|
const ext = extname(target).toLowerCase();
|
|
47
|
-
if (
|
|
45
|
+
if (!path_isEditable(target)) {
|
|
48
46
|
process.exitCode = 1;
|
|
49
47
|
return envelope_error('', undefined, `${chalk.red(`edit: ${args[0]}: binary file (${ext}), cannot edit as text`)}\n`);
|
|
50
48
|
}
|
|
49
|
+
// A projection's file (a feed's note under /proc) is read and written
|
|
50
|
+
// through the projection that owns it, never through CUBE's store.
|
|
51
|
+
const { vfsDispatcher } = await import('@fnndsc/salsa');
|
|
52
|
+
if (vfsDispatcher.path_isVirtual(target))
|
|
53
|
+
return projectedFile_edit(args[0], target, ext, vfsDispatcher);
|
|
51
54
|
const catResult = await files_cat(target);
|
|
52
55
|
if (!catResult.ok) {
|
|
53
56
|
const err = errorStack.stack_pop();
|
|
@@ -57,12 +60,17 @@ export async function builtin_edit(args) {
|
|
|
57
60
|
// Hand the content to the surface's editor.
|
|
58
61
|
let edit;
|
|
59
62
|
try {
|
|
60
|
-
edit = await surface_get().localEdit({ content: catResult.value, extension: ext || '.txt' });
|
|
63
|
+
edit = await surface_get().localEdit({ content: catResult.value, extension: ext || '.txt', path: target });
|
|
61
64
|
}
|
|
62
65
|
catch (err) {
|
|
63
66
|
process.exitCode = 1;
|
|
64
67
|
return envelope_error('', undefined, `${chalk.red(`edit: ${err instanceof Error ? err.message : String(err)}`)}\n`);
|
|
65
68
|
}
|
|
69
|
+
// An editor that stays open (a browser pane) has taken the file; each save
|
|
70
|
+
// made there runs as its own command line, so there is nothing to save here.
|
|
71
|
+
if (edit.opened) {
|
|
72
|
+
return envelope_ok(`${chalk.gray(EDIT_OPENED_LINE)}\n`);
|
|
73
|
+
}
|
|
66
74
|
if (!edit.changed) {
|
|
67
75
|
return envelope_ok(`${chalk.gray('(no changes)')}\n`);
|
|
68
76
|
}
|
|
@@ -95,4 +103,41 @@ export async function builtin_edit(args) {
|
|
|
95
103
|
}
|
|
96
104
|
}
|
|
97
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Edits a file a projection holds (a feed's note at
|
|
108
|
+
* /proc/jobs/feed_N/note): read through the projection, handed to the
|
|
109
|
+
* surface's editor, written back through the projection. A read-only
|
|
110
|
+
* projected file is refused by the projection, in its own words.
|
|
111
|
+
*
|
|
112
|
+
* @param named - The path as the operator typed it.
|
|
113
|
+
* @param target - The resolved path.
|
|
114
|
+
* @param ext - Its extension, for the editor's highlighting.
|
|
115
|
+
* @param dispatcher - The VFS dispatcher.
|
|
116
|
+
* @returns An envelope carrying the outcome.
|
|
117
|
+
*/
|
|
118
|
+
async function projectedFile_edit(named, target, ext, dispatcher) {
|
|
119
|
+
const read = await dispatcher.read(target);
|
|
120
|
+
if (!read.ok) {
|
|
121
|
+
const err = errorStack.stack_pop();
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
return envelope_error('', undefined, `${chalk.red(`edit: ${err ? error_stripDebugPrefix(err.message) : `${named}: could not read`}`)}\n`);
|
|
124
|
+
}
|
|
125
|
+
let edit;
|
|
126
|
+
try {
|
|
127
|
+
edit = await surface_get().localEdit({ content: read.value, extension: ext || '.txt', path: target });
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
process.exitCode = 1;
|
|
131
|
+
return envelope_error('', undefined, `${chalk.red(`edit: ${err instanceof Error ? err.message : String(err)}`)}\n`);
|
|
132
|
+
}
|
|
133
|
+
if (edit.opened)
|
|
134
|
+
return envelope_ok(`${chalk.gray(EDIT_OPENED_LINE)}\n`);
|
|
135
|
+
if (!edit.changed)
|
|
136
|
+
return envelope_ok(`${chalk.gray('(no changes)')}\n`);
|
|
137
|
+
if (await dispatcher.write(target, edit.content))
|
|
138
|
+
return envelope_ok(`${chalk.green(`Saved: ${named}`)}\n`);
|
|
139
|
+
const err = errorStack.stack_pop();
|
|
140
|
+
process.exitCode = 1;
|
|
141
|
+
return envelope_error('', undefined, `${chalk.red(`edit: ${err ? error_stripDebugPrefix(err.message) : `${named}: could not save`}`)}\n`);
|
|
142
|
+
}
|
|
98
143
|
//# sourceMappingURL=edit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/builtins/fs/edit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAc,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,UAAU,EAAwB,aAAa,EAAwB,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/builtins/fs/edit.ts"],"names":[],"mappings":"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"}
|
package/dist/builtins/fs/ls.js
CHANGED
|
@@ -60,8 +60,10 @@ export async function ls_run(runOptions) {
|
|
|
60
60
|
if (pathArgs.length === 0) {
|
|
61
61
|
const cwd = await session.getCWD();
|
|
62
62
|
rendered += `${chalk.gray(`[Cache] Invalidating: ${cwd}`)}\n`;
|
|
63
|
+
// The named listing only. A refresh used to clear EVERY listing too,
|
|
64
|
+
// so one REFRESH press made the next navigation anywhere fetch again
|
|
65
|
+
// — /bin included, seconds — for a staleness nobody had claimed.
|
|
63
66
|
listCache.cache_invalidate(cwd);
|
|
64
|
-
listCache.cache_invalidate();
|
|
65
67
|
}
|
|
66
68
|
else {
|
|
67
69
|
for (const pathArg of pathArgs) {
|
|
@@ -69,7 +71,6 @@ export async function ls_run(runOptions) {
|
|
|
69
71
|
rendered += `${chalk.gray(`[Cache] Invalidating: ${resolvedPath}`)}\n`;
|
|
70
72
|
listCache.cache_invalidate(resolvedPath);
|
|
71
73
|
}
|
|
72
|
-
listCache.cache_invalidate();
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
// One or more listings, in argument order; each returns its own envelope.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/builtins/fs/ls.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAwB,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAM3C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,MAAM,GAAe,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,MAAM,GAAgB,MAAM,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,MAAM,SAAS,GAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,MAAM,GAAG,SAAwB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC,CAAa;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACxB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC;AAmCD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAqB;IAChD,MAAM,QAAQ,GAAa,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;IAClD,MAAM,aAAa,GAAY,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC;IAE3D,MAAM,OAAO,GAOT;QACF,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;QAC9B,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,KAAK;QAChC,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,KAAK;QACxC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,MAAM;QAC/B,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,KAAK;QACpC,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,KAAK;KACzC,CAAC;IAEF,IAAI,QAAQ,GAAW,EAAE,CAAC;IAC1B,IAAI,WAAW,GAAW,EAAE,CAAC;IAE7B,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAW,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC,IAAI,CAAC;YAC9D,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/builtins/fs/ls.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,44 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import { listCache_get, envelope_ok, envelope_error } from '@fnndsc/cumin';
|
|
7
|
-
import { path_resolve } from '../utils.js';
|
|
7
|
+
import { path_resolve, error_stripDebugPrefix } from '../utils.js';
|
|
8
|
+
import { vfsDispatcher } from '@fnndsc/salsa';
|
|
9
|
+
import { errorStack } from '@fnndsc/cumin';
|
|
8
10
|
import { folder_checkExists } from './folderExists.js';
|
|
9
11
|
import { files_mkdir as chefs_mkdir_cmd } from '@fnndsc/chili/commands/fs/mkdir.js';
|
|
10
12
|
import { mkdir_render } from '@fnndsc/chili/views/fs.js';
|
|
13
|
+
/**
|
|
14
|
+
* Makes a folder in a projection. Under `-p` a folder already there is
|
|
15
|
+
* fine, as it is on a disk; without it the projection's own refusal stands.
|
|
16
|
+
*
|
|
17
|
+
* @param targetPath - The absolute virtual path.
|
|
18
|
+
* @param parents - Whether `-p` was given.
|
|
19
|
+
* @returns The outcome.
|
|
20
|
+
*/
|
|
21
|
+
async function virtualFolder_make(targetPath, parents) {
|
|
22
|
+
if (parents) {
|
|
23
|
+
const slash = targetPath.lastIndexOf('/');
|
|
24
|
+
const siblings = await vfsDispatcher.list(targetPath.slice(0, slash) || '/');
|
|
25
|
+
if (siblings.ok && siblings.value.some((item) => item.name === targetPath.slice(slash + 1))) {
|
|
26
|
+
return { path: targetPath, created: false, existed: true };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return { path: targetPath, created: await vfsDispatcher.mkdir(targetPath) };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The kernel's reason a verb failed, after what it was doing.
|
|
33
|
+
*
|
|
34
|
+
* @param doing - The verb and its operand, as the refusal opens.
|
|
35
|
+
* @returns `doing: reason`, the reason the stack held (its debug prefix stripped).
|
|
36
|
+
*/
|
|
37
|
+
function refusal_said(doing) {
|
|
38
|
+
const reason = errorStack.stack_pop();
|
|
39
|
+
if (reason === undefined)
|
|
40
|
+
return `${doing}: failed`;
|
|
41
|
+
const said = error_stripDebugPrefix(reason.message);
|
|
42
|
+
// The dispatcher's refusal already names the verb; a provider's names the operand first.
|
|
43
|
+
return said.startsWith('mkdir:') ? said : `${doing}: ${said.replace(/^[^:]*: /, '')}`;
|
|
44
|
+
}
|
|
11
45
|
/**
|
|
12
46
|
* Parses `mkdir` arguments: `-p` / `--parents`, and `--` to end options.
|
|
13
47
|
* Any other option is refused by name rather than taken for a path — a
|
|
@@ -64,6 +98,19 @@ export async function mkdir_run(options) {
|
|
|
64
98
|
try {
|
|
65
99
|
const targetPath = await path_resolve(pathArg);
|
|
66
100
|
const parentDir = targetPath.substring(0, targetPath.lastIndexOf('/')) || '/';
|
|
101
|
+
// A projection that makes folders (a tag under /proc/tags) makes them
|
|
102
|
+
// itself; one that makes none refuses by name.
|
|
103
|
+
if (vfsDispatcher.path_isVirtual(targetPath)) {
|
|
104
|
+
const made = await virtualFolder_make(targetPath, parents);
|
|
105
|
+
if (made.created)
|
|
106
|
+
rendered += `${mkdir_render(targetPath, true)}\n`;
|
|
107
|
+
else if (made.existed !== true)
|
|
108
|
+
renderedErr += `${chalk.red(refusal_said(`mkdir: cannot create directory '${pathArg}'`))}\n`;
|
|
109
|
+
outcomes.push(made);
|
|
110
|
+
if (made.created)
|
|
111
|
+
listCache_get().cache_invalidate(parentDir);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
67
114
|
if (await folder_checkExists(targetPath)) {
|
|
68
115
|
if (parents) {
|
|
69
116
|
outcomes.push({ path: targetPath, created: false, existed: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mkdir.js","sourceRoot":"","sources":["../../../src/builtins/fs/mkdir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mkdir.js","sourceRoot":"","sources":["../../../src/builtins/fs/mkdir.ts"],"names":[],"mappings":"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"}
|
package/dist/builtins/fs/mv.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import chalk from 'chalk';
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { listCache_get, envelope_ok, envelope_error, errorStack } from '@fnndsc/cumin';
|
|
8
|
-
import { commandArgs_process, optionsUnknown_refusal, path_resolve } from '../utils.js';
|
|
8
|
+
import { commandArgs_process, optionsUnknown_refusal, path_resolve, error_stripDebugPrefix } from '../utils.js';
|
|
9
|
+
import { vfsDispatcher } from '@fnndsc/salsa';
|
|
9
10
|
import { destination_ask, destination_missing } from './destination.js';
|
|
10
11
|
import { files_mv as chefs_mv_cmd } from '@fnndsc/chili/commands/fs/mv.js';
|
|
11
12
|
import { mv_render } from '@fnndsc/chili/views/fs.js';
|
|
@@ -92,7 +93,11 @@ export async function mv_run(options) {
|
|
|
92
93
|
else {
|
|
93
94
|
rendered += `Moving ${srcPath} to ${destPath}...\n`;
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
+
// A rename inside a projection (a tag under /proc/tags) is the
|
|
97
|
+
// projection's; across one, or in one that renames nothing, it refuses.
|
|
98
|
+
const success = vfsDispatcher.path_isVirtual(srcPath) || vfsDispatcher.path_isVirtual(destPath)
|
|
99
|
+
? await vfsDispatcher.rename(srcPath, destPath)
|
|
100
|
+
: await chefs_mv_cmd(srcPath, destPath);
|
|
96
101
|
if (sources.length === 1) {
|
|
97
102
|
rendered += `${mv_render(srcPath, destPath, success)}\n`;
|
|
98
103
|
}
|
|
@@ -100,8 +105,10 @@ export async function mv_run(options) {
|
|
|
100
105
|
// The kernel said WHY on the stack; a bare "Failed to move" makes
|
|
101
106
|
// an operator guess at a reason that was already known.
|
|
102
107
|
const reason = errorStack.stack_pop();
|
|
103
|
-
if (reason !== undefined)
|
|
104
|
-
|
|
108
|
+
if (reason !== undefined) {
|
|
109
|
+
const said = error_stripDebugPrefix(reason.message);
|
|
110
|
+
renderedErr += `${chalk.red(said.startsWith('mv:') ? said : `mv: ${said}`)}\n`;
|
|
111
|
+
}
|
|
105
112
|
}
|
|
106
113
|
outcomes.push({ source: srcPath, moved: success });
|
|
107
114
|
if (success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mv.js","sourceRoot":"","sources":["../../../src/builtins/fs/mv.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAmB,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAExG,OAAO,EAAc,mBAAmB,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mv.js","sourceRoot":"","sources":["../../../src/builtins/fs/mv.ts"],"names":[],"mappings":"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"}
|
package/dist/builtins/fs/rm.d.ts
CHANGED
|
@@ -53,6 +53,16 @@ export interface RmOutcome {
|
|
|
53
53
|
removed: boolean;
|
|
54
54
|
skipped: boolean;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* What rm says under /proc/tags, where nothing is removed by rm: a tag is a
|
|
58
|
+
* folder (`rmdir` deletes it) and a feed inside one is a tagging (`setfattr
|
|
59
|
+
* -x` takes it off).
|
|
60
|
+
*
|
|
61
|
+
* @param target - The resolved path.
|
|
62
|
+
* @param pathArg - The operand as typed.
|
|
63
|
+
* @returns The refusal, or null for a path outside /proc/tags.
|
|
64
|
+
*/
|
|
65
|
+
export declare function tagPath_refusal(target: string, pathArg: string): string | null;
|
|
56
66
|
/**
|
|
57
67
|
* Removes one or more files or directories.
|
|
58
68
|
*
|
package/dist/builtins/fs/rm.js
CHANGED
|
@@ -10,6 +10,7 @@ import { repl_confirm } from '../../core/question.js';
|
|
|
10
10
|
import { files_rm as chefs_rm_cmd } from '@fnndsc/chili/commands/fs/rm.js';
|
|
11
11
|
import { rm_render } from '@fnndsc/chili/views/fs.js';
|
|
12
12
|
import { sink_get } from '../../core/sink.js';
|
|
13
|
+
import { PROC_TAGS_PREFIX } from '@fnndsc/salsa';
|
|
13
14
|
/**
|
|
14
15
|
* Prompts the user for confirmation.
|
|
15
16
|
*
|
|
@@ -134,6 +135,24 @@ export function rmFailure_reason(result, recursive) {
|
|
|
134
135
|
return 'No such file or directory';
|
|
135
136
|
return result.error || 'unknown error';
|
|
136
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* What rm says under /proc/tags, where nothing is removed by rm: a tag is a
|
|
140
|
+
* folder (`rmdir` deletes it) and a feed inside one is a tagging (`setfattr
|
|
141
|
+
* -x` takes it off).
|
|
142
|
+
*
|
|
143
|
+
* @param target - The resolved path.
|
|
144
|
+
* @param pathArg - The operand as typed.
|
|
145
|
+
* @returns The refusal, or null for a path outside /proc/tags.
|
|
146
|
+
*/
|
|
147
|
+
export function tagPath_refusal(target, pathArg) {
|
|
148
|
+
if (target !== PROC_TAGS_PREFIX && !target.startsWith(`${PROC_TAGS_PREFIX}/`))
|
|
149
|
+
return null;
|
|
150
|
+
const parts = target.slice(PROC_TAGS_PREFIX.length).split('/').filter(Boolean);
|
|
151
|
+
if (parts.length === 2) {
|
|
152
|
+
return `rm: cannot remove '${pathArg}': Operation not permitted (setfattr -x tag -v ${parts[0]} ${parts[1]} untags the feed)`;
|
|
153
|
+
}
|
|
154
|
+
return `rm: cannot remove '${pathArg}': Is a directory (rmdir deletes a tag no feed wears)`;
|
|
155
|
+
}
|
|
137
156
|
/**
|
|
138
157
|
* Removes one or more files or directories.
|
|
139
158
|
*
|
|
@@ -230,6 +249,15 @@ export async function rm_run(runArgs) {
|
|
|
230
249
|
const pathArg = paths[index];
|
|
231
250
|
try {
|
|
232
251
|
const target = await path_resolve(pathArg);
|
|
252
|
+
// A tag's folder is a tag, and the feeds in it are its taggings: each
|
|
253
|
+
// has its own verb, and rm names it rather than guess.
|
|
254
|
+
const tagRefusal = tagPath_refusal(target, pathArg);
|
|
255
|
+
if (tagRefusal !== null) {
|
|
256
|
+
err_emit(chalk.red(tagRefusal));
|
|
257
|
+
outcomes.push({ path: pathArg, removed: false, skipped: false });
|
|
258
|
+
failCount++;
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
233
261
|
if (target.startsWith('/bin/')) {
|
|
234
262
|
err_emit(chalk.red(`rm: cannot remove '${pathArg}': virtual /bin directory`));
|
|
235
263
|
outcomes.push({ path: pathArg, removed: false, skipped: false });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../src/builtins/fs/rm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAmB,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAuB,MAAM,iCAAiC,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../src/builtins/fs/rm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CommandEnvelope } from '@fnndsc/cumin';
|
|
2
|
+
/** Outcome of one rmdir target, for the envelope model. */
|
|
3
|
+
export interface RmdirOutcome {
|
|
4
|
+
path: string;
|
|
5
|
+
removed: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parses rmdir's arguments: paths only; any flag is refused by name.
|
|
9
|
+
*
|
|
10
|
+
* @param args - Raw argument tokens.
|
|
11
|
+
* @returns The paths, or the refusal.
|
|
12
|
+
*/
|
|
13
|
+
export declare function rmdirArgs_parse(args: string[]): {
|
|
14
|
+
paths: string[];
|
|
15
|
+
} | {
|
|
16
|
+
refused: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Removes empty folders.
|
|
20
|
+
*
|
|
21
|
+
* @param args - The folders.
|
|
22
|
+
* @returns An envelope whose model lists each folder's outcome; silent on success.
|
|
23
|
+
*/
|
|
24
|
+
export declare function builtin_rmdir(args: string[]): Promise<CommandEnvelope>;
|