@duyquangnvx/agent-cli 0.4.0 → 0.6.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/CHANGELOG.md +80 -0
- package/dist/agent-cli.js +2 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent.d.ts +5 -3
- package/dist/agent.js +31 -10
- package/dist/agent.js.map +1 -1
- package/dist/built-ins/commands.d.ts +8 -0
- package/dist/{built-ins.js → built-ins/commands.js} +4 -4
- package/dist/built-ins/commands.js.map +1 -0
- package/dist/built-ins/doctor-rows.d.ts +4 -0
- package/dist/{doctor-rows.js → built-ins/doctor-rows.js} +18 -26
- package/dist/built-ins/doctor-rows.js.map +1 -0
- package/dist/built-ins/doctor.d.ts +5 -0
- package/dist/{doctor.js → built-ins/doctor.js} +27 -20
- package/dist/built-ins/doctor.js.map +1 -0
- package/dist/{global-install.js → built-ins/global-install.js} +1 -1
- package/dist/built-ins/global-install.js.map +1 -0
- package/dist/{npm.d.ts → built-ins/npm.d.ts} +5 -2
- package/dist/{npm.js → built-ins/npm.js} +25 -33
- package/dist/built-ins/npm.js.map +1 -0
- package/dist/built-ins/semver.js.map +1 -0
- package/dist/built-ins/skills.d.ts +18 -0
- package/dist/built-ins/skills.js +97 -0
- package/dist/built-ins/skills.js.map +1 -0
- package/dist/{update.d.ts → built-ins/update.d.ts} +3 -2
- package/dist/{update.js → built-ins/update.js} +28 -18
- package/dist/built-ins/update.js.map +1 -0
- package/dist/{upgrade-notes.js → built-ins/upgrade-notes.js} +1 -1
- package/dist/built-ins/upgrade-notes.js.map +1 -0
- package/dist/clock.d.ts +1 -0
- package/dist/clock.js.map +1 -1
- package/dist/command-spec.d.ts +17 -2
- package/dist/command-spec.js +30 -9
- package/dist/command-spec.js.map +1 -1
- package/dist/confirm.js +6 -2
- package/dist/confirm.js.map +1 -1
- package/dist/context.d.ts +139 -0
- package/dist/context.js +2 -0
- package/dist/context.js.map +1 -0
- package/dist/cost.js +2 -2
- package/dist/cost.js.map +1 -1
- package/dist/define.d.ts +100 -87
- package/dist/define.js +3 -1
- package/dist/define.js.map +1 -1
- package/dist/errno.d.ts +8 -4
- package/dist/errno.js +21 -4
- package/dist/errno.js.map +1 -1
- package/dist/error-table.d.ts +6 -1
- package/dist/error-table.js +5 -1
- package/dist/error-table.js.map +1 -1
- package/dist/errors.d.ts +11 -2
- package/dist/errors.js +21 -8
- package/dist/errors.js.map +1 -1
- package/dist/execute.d.ts +9 -2
- package/dist/execute.js +10 -3
- package/dist/execute.js.map +1 -1
- package/dist/exit-classes.js +38 -38
- package/dist/exit-classes.js.map +1 -1
- package/dist/files.d.ts +30 -8
- package/dist/files.js +104 -17
- package/dist/files.js.map +1 -1
- package/dist/help-json.d.ts +2 -2
- package/dist/help-json.js +6 -2
- package/dist/help-json.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.js +14 -9
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +7 -1
- package/dist/input.js +33 -4
- package/dist/input.js.map +1 -1
- package/dist/interrupts.d.ts +7 -2
- package/dist/interrupts.js +29 -15
- package/dist/interrupts.js.map +1 -1
- package/dist/invocation.d.ts +10 -5
- package/dist/invocation.js +24 -11
- package/dist/invocation.js.map +1 -1
- package/dist/list.d.ts +12 -3
- package/dist/list.js +38 -6
- package/dist/list.js.map +1 -1
- package/dist/manifest.d.ts +17 -0
- package/dist/manifest.js +24 -0
- package/dist/manifest.js.map +1 -0
- package/dist/operator.d.ts +5 -0
- package/dist/operator.js +15 -0
- package/dist/operator.js.map +1 -0
- package/dist/output.d.ts +6 -4
- package/dist/output.js +5 -6
- package/dist/output.js.map +1 -1
- package/dist/outputs.d.ts +24 -1
- package/dist/outputs.js +58 -2
- package/dist/outputs.js.map +1 -1
- package/dist/parse-input.d.ts +11 -2
- package/dist/parse-input.js +78 -27
- package/dist/parse-input.js.map +1 -1
- package/dist/project.d.ts +3 -2
- package/dist/project.js +11 -10
- package/dist/project.js.map +1 -1
- package/dist/route.d.ts +1 -1
- package/dist/route.js +2 -1
- package/dist/route.js.map +1 -1
- package/dist/run-cli.d.ts +8 -33
- package/dist/run-cli.js +50 -157
- package/dist/run-cli.js.map +1 -1
- package/dist/run-command.d.ts +11 -0
- package/dist/run-command.js +234 -0
- package/dist/run-command.js.map +1 -0
- package/dist/run-options.d.ts +48 -0
- package/dist/run-options.js +2 -0
- package/dist/run-options.js.map +1 -0
- package/dist/run-process.js +7 -4
- package/dist/run-process.js.map +1 -1
- package/dist/secrets.d.ts +10 -6
- package/dist/secrets.js +8 -9
- package/dist/secrets.js.map +1 -1
- package/dist/side-task.d.ts +27 -0
- package/dist/side-task.js +31 -0
- package/dist/side-task.js.map +1 -0
- package/dist/spawn.d.ts +29 -6
- package/dist/spawn.js +126 -29
- package/dist/spawn.js.map +1 -1
- package/dist/spill.d.ts +4 -3
- package/dist/spill.js +1 -7
- package/dist/spill.js.map +1 -1
- package/dist/stdin.d.ts +33 -0
- package/dist/stdin.js +92 -0
- package/dist/stdin.js.map +1 -0
- package/dist/style.d.ts +1 -1
- package/dist/tokenize.d.ts +3 -0
- package/dist/tokenize.js +5 -4
- package/dist/tokenize.js.map +1 -1
- package/dist/tools.d.ts +6 -3
- package/dist/tools.js +18 -11
- package/dist/tools.js.map +1 -1
- package/dist/usage.d.ts +2 -0
- package/dist/usage.js +12 -1
- package/dist/usage.js.map +1 -1
- package/dist/version.d.ts +3 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
- package/dist/built-ins.d.ts +0 -3
- package/dist/built-ins.js.map +0 -1
- package/dist/doctor-rows.d.ts +0 -3
- package/dist/doctor-rows.js.map +0 -1
- package/dist/doctor.d.ts +0 -4
- package/dist/doctor.js.map +0 -1
- package/dist/global-install.js.map +0 -1
- package/dist/npm.js.map +0 -1
- package/dist/semver.js.map +0 -1
- package/dist/skills.d.ts +0 -11
- package/dist/skills.js +0 -58
- package/dist/skills.js.map +0 -1
- package/dist/update.js.map +0 -1
- package/dist/upgrade-notes.js.map +0 -1
- /package/dist/{global-install.d.ts → built-ins/global-install.d.ts} +0 -0
- /package/dist/{semver.d.ts → built-ins/semver.d.ts} +0 -0
- /package/dist/{semver.js → built-ins/semver.js} +0 -0
- /package/dist/{upgrade-notes.d.ts → built-ins/upgrade-notes.d.ts} +0 -0
package/dist/output.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { SpecNode } from "./command-spec.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Env } from "./context.js";
|
|
3
|
+
import type { Cli } from "./define.js";
|
|
3
4
|
import type { ErrorTable } from "./error-table.js";
|
|
5
|
+
import { type ErrorFormat } from "./errors.js";
|
|
4
6
|
import type { Outcome } from "./execute.js";
|
|
5
7
|
import type { Invocation } from "./invocation.js";
|
|
6
8
|
import type { Spill } from "./spill.js";
|
|
@@ -10,7 +12,7 @@ export interface RunResult {
|
|
|
10
12
|
readonly stderr: string;
|
|
11
13
|
readonly exitCode: number;
|
|
12
14
|
}
|
|
13
|
-
export interface OutputFormat {
|
|
15
|
+
export interface OutputFormat extends Pick<ErrorFormat, "bugs"> {
|
|
14
16
|
readonly cliName: string;
|
|
15
17
|
readonly env: Env;
|
|
16
18
|
readonly style: Style;
|
|
@@ -34,6 +36,8 @@ export type Settled = {
|
|
|
34
36
|
readonly error: unknown;
|
|
35
37
|
readonly delivered: Outcome | undefined;
|
|
36
38
|
};
|
|
39
|
+
/** A progress message as stderr carries it: one JSON object per line under `--json` (ADR 0006). */
|
|
40
|
+
export declare function progressLine(message: string, json: boolean): string;
|
|
37
41
|
/** What a serve Command prints the moment it starts. */
|
|
38
42
|
export declare function startedOutput(outcome: Outcome, format: OutputFormat, spill: Spill): Promise<string> | string;
|
|
39
43
|
/** A serve Command stopped after it started: stopping it is how it is meant to end. */
|
|
@@ -42,6 +46,4 @@ export declare function errorResult(error: unknown, format: OutputFormat): RunRe
|
|
|
42
46
|
export declare function commandResult(settled: Settled, format: DataFormat, spill: Spill): Promise<RunResult>;
|
|
43
47
|
export declare function textHelp(node: SpecNode, root: SpecNode, cli: Cli, style: Style): string;
|
|
44
48
|
export declare function helpResult(node: SpecNode, root: SpecNode, cli: Cli, { style, json }: OutputFormat): RunResult;
|
|
45
|
-
/** The first line of `--version`: the version, and the commit and time of a stamped build. */
|
|
46
|
-
export declare function versionLine({ version, build }: Cli): string;
|
|
47
49
|
export declare function versionResult(cli: Cli, packageRoot: string): RunResult;
|
package/dist/output.js
CHANGED
|
@@ -4,6 +4,7 @@ import { exitCodeOf, isBug } from "./exit-classes.js";
|
|
|
4
4
|
import { cliHelp, commandHelp, groupHelp } from "./help.js";
|
|
5
5
|
import { cliHelpJson, commandHelpJson, groupHelpJson } from "./help-json.js";
|
|
6
6
|
import { Page, pageFooter, printedPage, projected, renderRows } from "./list.js";
|
|
7
|
+
import { versionLine } from "./version.js";
|
|
7
8
|
const SUCCESS_EXIT_CODE = 0;
|
|
8
9
|
function withTrailingNewline(text) {
|
|
9
10
|
return text === "" || text.endsWith("\n") ? text : `${text}\n`;
|
|
@@ -24,6 +25,10 @@ function printed(value, render, { json, invocation, style, fields }) {
|
|
|
24
25
|
? `${JSON.stringify({ ...page, items: rows })}\n`
|
|
25
26
|
: `${renderRows(rows, fields)}${pageFooter(page)}`;
|
|
26
27
|
}
|
|
28
|
+
/** A progress message as stderr carries it: one JSON object per line under `--json` (ADR 0006). */
|
|
29
|
+
export function progressLine(message, json) {
|
|
30
|
+
return json ? `${JSON.stringify({ progress: message })}\n` : `${message}\n`;
|
|
31
|
+
}
|
|
27
32
|
function errorText(error, format) {
|
|
28
33
|
const text = formatRuntimeError(error, {
|
|
29
34
|
...format,
|
|
@@ -92,12 +97,6 @@ function helpOf(node, root, cli, style, json) {
|
|
|
92
97
|
export function helpResult(node, root, cli, { style, json }) {
|
|
93
98
|
return { stdout: helpOf(node, root, cli, style, json), stderr: "", exitCode: SUCCESS_EXIT_CODE };
|
|
94
99
|
}
|
|
95
|
-
/** The first line of `--version`: the version, and the commit and time of a stamped build. */
|
|
96
|
-
export function versionLine({ version, build }) {
|
|
97
|
-
return build === undefined
|
|
98
|
-
? version
|
|
99
|
-
: `${version} (${build.sha}${build.dirty ? "+dirty" : ""}) built ${build.builtAt}`;
|
|
100
|
-
}
|
|
101
100
|
export function versionResult(cli, packageRoot) {
|
|
102
101
|
const lines = cli.build === undefined
|
|
103
102
|
? [versionLine(cli)]
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/dist/outputs.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type FileError } from "./errno.js";
|
|
2
|
+
import { type Files } from "./files.js";
|
|
2
3
|
import { type Invocation } from "./invocation.js";
|
|
3
4
|
export declare const OUTPUT_EXISTS = "OUTPUT_EXISTS";
|
|
4
5
|
export interface Overwrite {
|
|
@@ -9,3 +10,25 @@ export interface Overwrite {
|
|
|
9
10
|
}
|
|
10
11
|
/** Refuses a run that would overwrite existing outputs unless the caller passed `--force`. */
|
|
11
12
|
export declare function checkOutputs({ invocation, commandLine, force, files }: Overwrite, outputs: readonly string[] | undefined): Promise<void>;
|
|
13
|
+
export interface OutputsGuard {
|
|
14
|
+
/**
|
|
15
|
+
* The run's files: the first write to each guarded output is exclusive, so a file that appeared
|
|
16
|
+
* meanwhile is kept; a later write to it replaces what this run wrote.
|
|
17
|
+
*/
|
|
18
|
+
readonly files: Files;
|
|
19
|
+
/** Guards `outputs` from now on; a refused write's hint names `forceLine`. */
|
|
20
|
+
guard(outputs: readonly string[], forceLine: string): void;
|
|
21
|
+
}
|
|
22
|
+
/** Guards the writes to declared outputs of `files`, whose paths resolve against `cwd`. */
|
|
23
|
+
export declare function outputsGuard(files: Files, cwd: string): OutputsGuard;
|
|
24
|
+
export interface Probe {
|
|
25
|
+
/** The run's file system, unresolved and unclassified, so a failure names the folder. */
|
|
26
|
+
readonly files: Files;
|
|
27
|
+
readonly cwd: string;
|
|
28
|
+
readonly fileError: FileError;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates each output folder and a temp file in it, so a sandbox denial fails before `apply`
|
|
32
|
+
* spends anything. The temp file's name is the Runtime's, so a crashed run's leftover is swept.
|
|
33
|
+
*/
|
|
34
|
+
export declare function probeOutputs({ files, cwd, fileError }: Probe, outputs: readonly string[]): Promise<void>;
|
package/dist/outputs.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
|
2
|
+
import { ALREADY_EXISTS } from "./errno.js";
|
|
1
3
|
import { CliError } from "./errors.js";
|
|
4
|
+
import { tempPathOf } from "./files.js";
|
|
2
5
|
import { FORCE_FLAG } from "./flags.js";
|
|
3
|
-
import {
|
|
6
|
+
import { commandLineOf } from "./invocation.js";
|
|
4
7
|
export const OUTPUT_EXISTS = "OUTPUT_EXISTS";
|
|
5
8
|
/** Refuses a run that would overwrite existing outputs unless the caller passed `--force`. */
|
|
6
9
|
export async function checkOutputs({ invocation, commandLine, force, files }, outputs) {
|
|
@@ -16,7 +19,60 @@ export async function checkOutputs({ invocation, commandLine, force, files }, ou
|
|
|
16
19
|
throw new CliError({
|
|
17
20
|
code: OUTPUT_EXISTS,
|
|
18
21
|
message: `\`${commandLine}\` would overwrite ${existing.join(", ")}`,
|
|
19
|
-
hint: `to replace ${them}, run \`${
|
|
22
|
+
hint: `to replace ${them}, run \`${commandLineOf(invocation, { add: [FORCE_FLAG.flag] })}\``,
|
|
20
23
|
});
|
|
21
24
|
}
|
|
25
|
+
/** Guards the writes to declared outputs of `files`, whose paths resolve against `cwd`. */
|
|
26
|
+
export function outputsGuard(files, cwd) {
|
|
27
|
+
const unwritten = new Set();
|
|
28
|
+
let forceLine = "";
|
|
29
|
+
const exclusiveWrite = async (path, data, options) => {
|
|
30
|
+
const target = resolve(cwd, path);
|
|
31
|
+
unwritten.delete(target);
|
|
32
|
+
try {
|
|
33
|
+
await files.write(path, data, { ...options, exclusive: true });
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
unwritten.add(target);
|
|
37
|
+
if (!(error instanceof CliError) || error.code !== ALREADY_EXISTS)
|
|
38
|
+
throw error;
|
|
39
|
+
throw new CliError({
|
|
40
|
+
code: ALREADY_EXISTS,
|
|
41
|
+
message: error.message,
|
|
42
|
+
hint: `to replace it, run \`${forceLine}\``,
|
|
43
|
+
}, { cause: error });
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
files: {
|
|
48
|
+
...files,
|
|
49
|
+
write: (path, data, options) => unwritten.has(resolve(cwd, path))
|
|
50
|
+
? exclusiveWrite(path, data, options)
|
|
51
|
+
: files.write(path, data, options),
|
|
52
|
+
},
|
|
53
|
+
guard: (outputs, line) => {
|
|
54
|
+
forceLine = line;
|
|
55
|
+
for (const path of outputs)
|
|
56
|
+
unwritten.add(resolve(cwd, path));
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates each output folder and a temp file in it, so a sandbox denial fails before `apply`
|
|
62
|
+
* spends anything. The temp file's name is the Runtime's, so a crashed run's leftover is swept.
|
|
63
|
+
*/
|
|
64
|
+
export async function probeOutputs({ files, cwd, fileError }, outputs) {
|
|
65
|
+
const folders = new Set(outputs.map((path) => dirname(resolve(cwd, path))));
|
|
66
|
+
await Promise.all([...folders].map(async (folder) => {
|
|
67
|
+
const probe = tempPathOf(join(folder, "outputs-probe"));
|
|
68
|
+
try {
|
|
69
|
+
await files.mkdir(folder);
|
|
70
|
+
await files.write(probe, "");
|
|
71
|
+
await files.remove(probe);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw fileError(error, { path: folder, access: "write" });
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
22
78
|
//# sourceMappingURL=outputs.js.map
|
package/dist/outputs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outputs.js","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"outputs.js","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"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"}
|
package/dist/parse-input.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import type { CommandSpec } from "./command-spec.js";
|
|
2
|
+
import type { InputField } from "./input.js";
|
|
1
3
|
import { type Invocation } from "./invocation.js";
|
|
2
4
|
import { type PageInput } from "./list.js";
|
|
3
5
|
import type { CommandRoute } from "./route.js";
|
|
6
|
+
import { type KnownFlag } from "./tokenize.js";
|
|
4
7
|
/** The Standard flag values of one run of a Command. */
|
|
5
8
|
export interface StandardValues {
|
|
6
9
|
readonly json: boolean;
|
|
@@ -13,9 +16,15 @@ export interface StandardValues {
|
|
|
13
16
|
/** The row fields to print, or undefined when the caller gave no `--fields`. */
|
|
14
17
|
readonly fields: readonly string[] | undefined;
|
|
15
18
|
}
|
|
19
|
+
/** Reads the text of the arg given `-` from stdin. */
|
|
20
|
+
export type StdinReader = (field: InputField) => Promise<string>;
|
|
16
21
|
export interface ParsedCommand {
|
|
17
22
|
readonly input: Record<string, unknown>;
|
|
18
23
|
readonly flags: StandardValues;
|
|
19
24
|
}
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
export declare function knownFlags(spec: CommandSpec): KnownFlag[];
|
|
26
|
+
/**
|
|
27
|
+
* The validated input and Standard flag values of the routed Command, or one usage error; the arg
|
|
28
|
+
* given `-` takes its text from `readStdin`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseCommand({ spec, words, json }: CommandRoute, invocation: Invocation, readStdin: StdinReader): Promise<ParsedCommand>;
|
package/dist/parse-input.js
CHANGED
|
@@ -3,11 +3,13 @@ import { UsageError } from "./errors.js";
|
|
|
3
3
|
import { CONFIRM_FLAG, DRY_RUN_FLAG, FORCE_FLAG, HELP_FLAG, VERSION_FLAG, YES_FLAG, } from "./flags.js";
|
|
4
4
|
import { commandLineRenaming } from "./invocation.js";
|
|
5
5
|
import { PAGE_INPUT, selectedFields } from "./list.js";
|
|
6
|
+
import { STDIN_OPERAND } from "./stdin.js";
|
|
6
7
|
import { closestFlag } from "./suggest.js";
|
|
7
8
|
import { tokenize } from "./tokenize.js";
|
|
8
|
-
import { INVALID_INPUT, invalidInputError, unknownOptionError } from "./usage.js";
|
|
9
|
+
import { INVALID_INPUT, invalidInputError, stdinTextError, unknownOptionError } from "./usage.js";
|
|
9
10
|
const NO_INPUT = z.object({});
|
|
10
|
-
|
|
11
|
+
const WHITESPACE = /\s/;
|
|
12
|
+
export function knownFlags(spec) {
|
|
11
13
|
return [
|
|
12
14
|
...spec.options.map((field) => ({
|
|
13
15
|
flag: field.label,
|
|
@@ -25,8 +27,12 @@ function unknownOptionsOf(words, candidates) {
|
|
|
25
27
|
return { flag, suggestion: closestFlag(flag, candidates) };
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
|
-
// A `--no-` switch turns its option off.
|
|
29
|
-
function optionValue(field,
|
|
30
|
+
// A `--no-` switch turns its option off; a repeated scalar flag keeps its last value.
|
|
31
|
+
function optionValue(field, all) {
|
|
32
|
+
if (field.variadic) {
|
|
33
|
+
return variadicValue(field, (all ?? []).filter((value) => value !== true));
|
|
34
|
+
}
|
|
35
|
+
const raw = all?.[all.length - 1];
|
|
30
36
|
return field.type === "boolean" && raw === true && field.label === `--no-${field.name}`
|
|
31
37
|
? false
|
|
32
38
|
: raw;
|
|
@@ -43,7 +49,7 @@ function converted(field, raw) {
|
|
|
43
49
|
const number = Number(raw);
|
|
44
50
|
return Number.isNaN(number) ? raw : number;
|
|
45
51
|
}
|
|
46
|
-
// No
|
|
52
|
+
// No values for an optional array leave it out, so its default applies.
|
|
47
53
|
function variadicValue(field, values) {
|
|
48
54
|
return values.length === 0 && !field.required ? undefined : values;
|
|
49
55
|
}
|
|
@@ -53,7 +59,7 @@ function parse(schema, values) {
|
|
|
53
59
|
.map(([field, raw]) => [field.key, converted(field, raw)]));
|
|
54
60
|
return schema.safeParse(input);
|
|
55
61
|
}
|
|
56
|
-
function issueLines(result, values, howToPass, reported) {
|
|
62
|
+
function issueLines(result, values, { howToPass, arrayIssueLine, reported = [], fromStdin }) {
|
|
57
63
|
if (result.success) {
|
|
58
64
|
return [];
|
|
59
65
|
}
|
|
@@ -69,12 +75,24 @@ function issueLines(result, values, howToPass, reported) {
|
|
|
69
75
|
if (raw === undefined) {
|
|
70
76
|
return [` ${field.label}: required, ${howToPass(field)}`];
|
|
71
77
|
}
|
|
72
|
-
//
|
|
78
|
+
// Text from stdin may be long, so it is named by where it came from instead of quoted.
|
|
79
|
+
if (field === fromStdin) {
|
|
80
|
+
return [` ${field.label} from stdin: ${issue.message}`];
|
|
81
|
+
}
|
|
73
82
|
return Array.isArray(raw)
|
|
74
|
-
? [
|
|
83
|
+
? [arrayIssueLine(field, raw, issue)]
|
|
75
84
|
: [` ${field.label} ${JSON.stringify(raw)}: ${issue.message}`];
|
|
76
85
|
});
|
|
77
86
|
}
|
|
87
|
+
function flagValuesIssueLine(field, raw, issue) {
|
|
88
|
+
const [, element] = issue.path;
|
|
89
|
+
if (typeof element === "number") {
|
|
90
|
+
return ` ${field.label} ${JSON.stringify(raw[element])}: ${issue.message}`;
|
|
91
|
+
}
|
|
92
|
+
return raw.length === 0
|
|
93
|
+
? ` ${field.label}: ${issue.message}, pass ${field.usage}`
|
|
94
|
+
: ` ${field.label} ${JSON.stringify(raw)}: ${issue.message}`;
|
|
95
|
+
}
|
|
78
96
|
// `first` is the 1-based position of the field's first operand on the command line.
|
|
79
97
|
function operandsIssueLine(field, raw, issue, first) {
|
|
80
98
|
const [, element] = issue.path;
|
|
@@ -103,32 +121,50 @@ function invalidInput(commandLine, invocation, unknown, otherLines) {
|
|
|
103
121
|
: `run \`${commandLine} --help\` to see the expected input`,
|
|
104
122
|
});
|
|
105
123
|
}
|
|
106
|
-
function
|
|
124
|
+
async function stdinTextOf(spec, operands, read) {
|
|
125
|
+
const index = spec.args.findIndex((field) => field.stdin);
|
|
126
|
+
const field = spec.args[index];
|
|
127
|
+
if (field === undefined || operands[index]?.value !== STDIN_OPERAND)
|
|
128
|
+
return undefined;
|
|
129
|
+
return { field, text: await read(field) };
|
|
130
|
+
}
|
|
131
|
+
async function parseInput(spec, words, invocation, readStdin) {
|
|
107
132
|
const { command, args: argFields, options: optionFields } = spec;
|
|
108
133
|
const pageFields = spec.list?.pageFields ?? [];
|
|
109
134
|
const known = knownFlags(spec);
|
|
110
|
-
const { operands, unknownOptions, values } = tokenize(words, known);
|
|
135
|
+
const { operands, unknownOptions, values, occurrences } = tokenize(words, known);
|
|
136
|
+
const stdin = await stdinTextOf(spec, operands, readStdin);
|
|
111
137
|
if (values.get(CONFIRM_FLAG.flag) === true) {
|
|
112
138
|
throw invalidInputError(spec.commandLine, `option '${CONFIRM_FLAG.usage}' argument missing`);
|
|
113
139
|
}
|
|
114
140
|
// A value option given without a value is collected as `true`.
|
|
115
|
-
const missing = [...optionFields, ...pageFields].filter((field) => field.type !== "boolean" &&
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
141
|
+
const missing = [...optionFields, ...pageFields].filter((field) => field.type !== "boolean" &&
|
|
142
|
+
(field.variadic
|
|
143
|
+
? occurrences.get(field.label)?.includes(true)
|
|
144
|
+
: values.get(field.label) === true));
|
|
145
|
+
const argValue = (field, index) => {
|
|
146
|
+
if (field === stdin?.field)
|
|
147
|
+
return stdin.text;
|
|
148
|
+
if (!field.variadic)
|
|
149
|
+
return operands[index]?.value;
|
|
150
|
+
return variadicValue(field, operands
|
|
151
|
+
.slice(index)
|
|
152
|
+
.filter((operand) => !operand.afterUnknownOption)
|
|
153
|
+
.map((operand) => operand.value));
|
|
154
|
+
};
|
|
155
|
+
const argValues = new Map(argFields.map((field, index) => [field, argValue(field, index)]));
|
|
125
156
|
const extraOperands = argFields.some((field) => field.variadic)
|
|
126
157
|
? []
|
|
127
158
|
: operands.slice(argFields.length);
|
|
128
159
|
const valuesOf = (fields) => new Map(fields.map((field) => [
|
|
129
160
|
field,
|
|
130
|
-
missing.includes(field) ? undefined : optionValue(field,
|
|
161
|
+
missing.includes(field) ? undefined : optionValue(field, occurrences.get(field.label)),
|
|
131
162
|
]));
|
|
163
|
+
const flagWording = {
|
|
164
|
+
howToPass: (field) => `pass ${field.usage}`,
|
|
165
|
+
arrayIssueLine: flagValuesIssueLine,
|
|
166
|
+
reported: missing,
|
|
167
|
+
};
|
|
132
168
|
const optionValues = valuesOf(optionFields);
|
|
133
169
|
const pageValues = valuesOf(pageFields);
|
|
134
170
|
const args = parse(command.args ?? NO_INPUT, argValues);
|
|
@@ -141,9 +177,13 @@ function parseInput(spec, words, invocation) {
|
|
|
141
177
|
// A word right after an unknown flag may be its value, so it isn't an extra arg.
|
|
142
178
|
.filter((operand) => !operand.afterUnknownOption)
|
|
143
179
|
.map((operand) => ` unexpected argument ${JSON.stringify(operand.value)}`),
|
|
144
|
-
...issueLines(args, argValues,
|
|
145
|
-
|
|
146
|
-
|
|
180
|
+
...issueLines(args, argValues, {
|
|
181
|
+
howToPass: (field) => `pass it as argument ${argFields.indexOf(field) + 1}`,
|
|
182
|
+
arrayIssueLine: (field, raw, issue) => operandsIssueLine(field, raw, issue, argFields.indexOf(field) + 1),
|
|
183
|
+
fromStdin: stdin?.field,
|
|
184
|
+
}),
|
|
185
|
+
...issueLines(options, optionValues, flagWording),
|
|
186
|
+
...issueLines(page, pageValues, flagWording),
|
|
147
187
|
];
|
|
148
188
|
if (unknown.length === 0 &&
|
|
149
189
|
otherLines.length === 0 &&
|
|
@@ -152,15 +192,26 @@ function parseInput(spec, words, invocation) {
|
|
|
152
192
|
page.success) {
|
|
153
193
|
return { input: { ...args.data, ...options.data }, page: page.data, values };
|
|
154
194
|
}
|
|
195
|
+
// Text that opens with `-` also leaves its arg missing, so it is told apart before other issues.
|
|
196
|
+
const [onlyWord] = unknownOptions;
|
|
197
|
+
if (onlyWord !== undefined &&
|
|
198
|
+
unknownOptions.length === 1 &&
|
|
199
|
+
WHITESPACE.test(onlyWord) &&
|
|
200
|
+
argFields.some((field) => field.stdin && argValues.get(field) === undefined)) {
|
|
201
|
+
throw stdinTextError(spec.commandLine, invocation, onlyWord);
|
|
202
|
+
}
|
|
155
203
|
const [only] = unknown;
|
|
156
204
|
if (only !== undefined && unknown.length === 1 && otherLines.length === 0) {
|
|
157
205
|
throw unknownOptionError(spec.commandLine, invocation, only.flag, only.suggestion === undefined ? [] : [only.suggestion]);
|
|
158
206
|
}
|
|
159
207
|
throw invalidInput(spec.commandLine, invocation, unknown, otherLines);
|
|
160
208
|
}
|
|
161
|
-
/**
|
|
162
|
-
|
|
163
|
-
|
|
209
|
+
/**
|
|
210
|
+
* The validated input and Standard flag values of the routed Command, or one usage error; the arg
|
|
211
|
+
* given `-` takes its text from `readStdin`.
|
|
212
|
+
*/
|
|
213
|
+
export async function parseCommand({ spec, words, json }, invocation, readStdin) {
|
|
214
|
+
const { input, page, values } = await parseInput(spec, words, invocation, readStdin);
|
|
164
215
|
const confirm = values.get(CONFIRM_FLAG.flag);
|
|
165
216
|
return {
|
|
166
217
|
input,
|
package/dist/parse-input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-input.js","sourceRoot":"","sources":["../src/parse-input.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-input.js","sourceRoot":"","sources":["../src/parse-input.ts"],"names":[],"mappings":"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"}
|
package/dist/project.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Project, ProjectFile } from "./
|
|
1
|
+
import type { Project, ProjectFile } from "./context.js";
|
|
2
|
+
import type { FileError } from "./errno.js";
|
|
2
3
|
export declare const PROJECT_INVALID = "PROJECT_INVALID";
|
|
3
4
|
/** The nearest Project file at or above `cwd`, parsed by its schema; undefined when there is none. */
|
|
4
|
-
export declare function projectOf<Settings>(projectFile: ProjectFile<Settings>, cwd: string): Project<Settings> | undefined;
|
|
5
|
+
export declare function projectOf<Settings>(projectFile: ProjectFile<Settings>, cwd: string, fileError: FileError): Project<Settings> | undefined;
|
package/dist/project.js
CHANGED
|
@@ -10,14 +10,14 @@ function invalid(path, problem, options) {
|
|
|
10
10
|
hint: `fix ${path}, then run the command again`,
|
|
11
11
|
}, options);
|
|
12
12
|
}
|
|
13
|
-
function readText(path) {
|
|
13
|
+
function readText(path, fileError) {
|
|
14
14
|
try {
|
|
15
15
|
return readFileSync(path, "utf8");
|
|
16
16
|
}
|
|
17
17
|
catch (error) {
|
|
18
18
|
if (isMissingFile(error))
|
|
19
19
|
return undefined;
|
|
20
|
-
throw error;
|
|
20
|
+
throw fileError(error, { path, access: "read" });
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
function parsed(path, text, schema) {
|
|
@@ -33,16 +33,17 @@ function parsed(path, text, schema) {
|
|
|
33
33
|
throw invalid(path, z.prettifyError(result.error));
|
|
34
34
|
return result.data;
|
|
35
35
|
}
|
|
36
|
-
function projectFrom(
|
|
37
|
-
const path = join(folder, file);
|
|
38
|
-
const text = readText(path);
|
|
39
|
-
if (text !== undefined)
|
|
40
|
-
return { root: folder, settings: parsed(path, text, schema) };
|
|
36
|
+
function projectFrom(projectFile, folder, fileError) {
|
|
37
|
+
const path = join(folder, projectFile.file);
|
|
38
|
+
const text = readText(path, fileError);
|
|
39
|
+
if (text !== undefined) {
|
|
40
|
+
return { root: folder, settings: parsed(path, text, projectFile.schema) };
|
|
41
|
+
}
|
|
41
42
|
const parent = dirname(folder);
|
|
42
|
-
return parent === folder ? undefined : projectFrom(
|
|
43
|
+
return parent === folder ? undefined : projectFrom(projectFile, parent, fileError);
|
|
43
44
|
}
|
|
44
45
|
/** The nearest Project file at or above `cwd`, parsed by its schema; undefined when there is none. */
|
|
45
|
-
export function projectOf(projectFile, cwd) {
|
|
46
|
-
return projectFrom(projectFile, resolve(cwd));
|
|
46
|
+
export function projectOf(projectFile, cwd, fileError) {
|
|
47
|
+
return projectFrom(projectFile, resolve(cwd), fileError);
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=project.js.map
|
package/dist/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD,SAAS,OAAO,CAAC,IAAY,EAAE,OAAe,EAAE,OAAsB;IACpE,OAAO,IAAI,QAAQ,CACjB;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,OAAO,EAAE;QAC1D,IAAI,EAAE,OAAO,IAAI,8BAA8B;KAChD,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAoB;IAClD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAW,IAAY,EAAE,IAAY,EAAE,MAA2B;IAC/E,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,WAAW,CAClB,WAAkC,EAClC,MAAc,EACd,SAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACrF,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,SAAS,CACvB,WAAkC,EAClC,GAAW,EACX,SAAoB;IAEpB,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/route.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CommandSpec, type SpecNode } from "./command-spec.js";
|
|
2
2
|
import type { UsageError } from "./errors.js";
|
|
3
3
|
import { type Invocation } from "./invocation.js";
|
|
4
4
|
/** Where the command line leads; `json` is set when the caller passed `--json` before any `--`. */
|
package/dist/route.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { visibleCommands, } from "./command-spec.js";
|
|
1
2
|
import { HELP_FLAG, HELP_SHORT, JSON_FLAG, VERSION_FLAG } from "./flags.js";
|
|
2
3
|
import { END_OF_OPTIONS } from "./invocation.js";
|
|
3
4
|
import { closestFlags, closestNames } from "./suggest.js";
|
|
@@ -54,7 +55,7 @@ function walk(node, words, json, invocation) {
|
|
|
54
55
|
return unknownCommand(node, first, json);
|
|
55
56
|
}
|
|
56
57
|
function unknownCommand(group, name, json) {
|
|
57
|
-
const suggestions = closestNames(name, Object.keys(group
|
|
58
|
+
const suggestions = closestNames(name, Object.keys(visibleCommands(group)));
|
|
58
59
|
return {
|
|
59
60
|
kind: "usage error",
|
|
60
61
|
error: unknownCommandError(group.commandLine, name, suggestions),
|
package/dist/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
|
package/dist/run-cli.d.ts
CHANGED
|
@@ -1,35 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { Cli, Env, NoPorts } from "./define.js";
|
|
3
|
-
import { type Files } from "./files.js";
|
|
1
|
+
import type { Cli } from "./define.js";
|
|
4
2
|
import { type RunResult } from "./output.js";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Aborting it interrupts the running Command, which then ends with `INTERRUPTED`: exit 143 when
|
|
12
|
-
* the abort reason is `"SIGTERM"`, else 130, as for Ctrl-C.
|
|
13
|
-
*/
|
|
14
|
-
readonly signal?: AbortSignal;
|
|
15
|
-
/**
|
|
16
|
-
* The script that started the CLI, as `process.argv[1]`; `doctor` checks it is inside npm's
|
|
17
|
-
* global install. Absent, the CLI counts as run from source.
|
|
18
|
-
*/
|
|
19
|
-
readonly bin?: string;
|
|
20
|
-
/** Replaces the ports the CLI's factory builds, for a test. */
|
|
21
|
-
readonly ports?: Ports;
|
|
22
|
-
/** Replaces the real clock, for a test that runs deadlines and waits instantly. */
|
|
23
|
-
readonly clock?: Clock;
|
|
24
|
-
/** Replaces the real file system, for a test of a write that fails. */
|
|
25
|
-
readonly files?: Files;
|
|
26
|
-
/** Replaces the real child processes, for a test of a tool that fails. */
|
|
27
|
-
readonly spawn?: Spawn;
|
|
28
|
-
}
|
|
29
|
-
/** Where output that cannot wait for the run's end is written as it happens. */
|
|
30
|
-
export interface Writers {
|
|
31
|
-
stdout(text: string): void;
|
|
32
|
-
stderr(text: string): void;
|
|
33
|
-
}
|
|
3
|
+
import type { RunOptions, Writers } from "./run-options.js";
|
|
4
|
+
/**
|
|
5
|
+
* Runs the CLI in-process on `argv` and returns its `stdout`, `stderr` and `exitCode`, as a Coding
|
|
6
|
+
* agent would see them; the options replace the process's env, cwd and the Runtime's helpers.
|
|
7
|
+
*/
|
|
34
8
|
export declare function runCli<Ports, Settings>(cli: Cli<Ports, Settings>, argv: readonly string[], options: RunOptions<NoInfer<Ports>>): Promise<RunResult>;
|
|
35
|
-
|
|
9
|
+
/** Runs the CLI, writes its output, then waits for the Side task it started. */
|
|
10
|
+
export declare function runWithProgress(cli: Cli, argv: readonly string[], options: RunOptions<unknown>, write: Writers, stopNotice?: string): Promise<RunResult>;
|