@duyquangnvx/agent-cli 0.27.0 → 0.28.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 +27 -0
- package/dist/agent-cli.js +9 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/built-ins/agents-md.d.ts +3 -2
- package/dist/built-ins/agents-md.js +8 -9
- package/dist/built-ins/agents-md.js.map +1 -1
- package/dist/built-ins/commands.d.ts +2 -1
- package/dist/built-ins/commands.js.map +1 -1
- package/dist/built-ins/doctor-rows.js +1 -1
- package/dist/built-ins/doctor-rows.js.map +1 -1
- package/dist/built-ins/doctor.d.ts +0 -1
- package/dist/built-ins/doctor.js +21 -8
- package/dist/built-ins/doctor.js.map +1 -1
- package/dist/built-ins/install/dependency.js +23 -23
- package/dist/built-ins/install/dependency.js.map +1 -1
- package/dist/built-ins/install/global-npm.d.ts +6 -3
- package/dist/built-ins/install/global-npm.js +19 -14
- package/dist/built-ins/install/global-npm.js.map +1 -1
- package/dist/built-ins/install/global.js +6 -7
- package/dist/built-ins/install/global.js.map +1 -1
- package/dist/built-ins/install/install.d.ts +0 -3
- package/dist/built-ins/install/install.js +0 -1
- package/dist/built-ins/install/install.js.map +1 -1
- package/dist/built-ins/install/release-check.js +10 -17
- package/dist/built-ins/install/release-check.js.map +1 -1
- package/dist/built-ins/npm.d.ts +8 -7
- package/dist/built-ins/npm.js +20 -12
- package/dist/built-ins/npm.js.map +1 -1
- package/dist/built-ins/project-root.d.ts +4 -4
- package/dist/built-ins/project-root.js +12 -22
- package/dist/built-ins/project-root.js.map +1 -1
- package/dist/built-ins/read.d.ts +5 -0
- package/dist/built-ins/read.js +29 -0
- package/dist/built-ins/read.js.map +1 -0
- package/dist/built-ins/setup.d.ts +1 -2
- package/dist/built-ins/setup.js +32 -26
- package/dist/built-ins/setup.js.map +1 -1
- package/dist/built-ins/skill/home.d.ts +2 -1
- package/dist/built-ins/skill/home.js +19 -17
- package/dist/built-ins/skill/home.js.map +1 -1
- package/dist/built-ins/skill/install-command.d.ts +2 -1
- package/dist/built-ins/skill/install-command.js +13 -11
- package/dist/built-ins/skill/install-command.js.map +1 -1
- package/dist/built-ins/skill/project.js +6 -7
- package/dist/built-ins/skill/project.js.map +1 -1
- package/dist/built-ins/skill/sync.d.ts +4 -3
- package/dist/built-ins/skill/sync.js +24 -17
- package/dist/built-ins/skill/sync.js.map +1 -1
- package/dist/built-ins/update.d.ts +1 -1
- package/dist/built-ins/update.js +9 -7
- package/dist/built-ins/update.js.map +1 -1
- package/dist/built-ins/upgrades.d.ts +2 -1
- package/dist/built-ins/upgrades.js +5 -12
- package/dist/built-ins/upgrades.js.map +1 -1
- package/dist/check-examples.js +5 -23
- package/dist/check-examples.js.map +1 -1
- package/dist/check-next-steps.d.ts +3 -9
- package/dist/check-next-steps.js +20 -32
- package/dist/check-next-steps.js.map +1 -1
- package/dist/command-line/line-problem.d.ts +14 -0
- package/dist/command-line/line-problem.js +41 -0
- package/dist/command-line/line-problem.js.map +1 -0
- package/dist/context/files.d.ts +3 -0
- package/dist/context/files.js +17 -2
- package/dist/context/files.js.map +1 -1
- package/dist/context/outputs.d.ts +13 -24
- package/dist/context/outputs.js +37 -37
- package/dist/context/outputs.js.map +1 -1
- package/dist/context/spawn.js +3 -1
- package/dist/context/spawn.js.map +1 -1
- package/dist/context/tools.d.ts +9 -4
- package/dist/context/tools.js +12 -12
- package/dist/context/tools.js.map +1 -1
- package/dist/context.d.ts +3 -1
- package/dist/define-command.d.ts +19 -12
- package/dist/define-command.js +5 -3
- package/dist/define-command.js.map +1 -1
- package/dist/define.d.ts +10 -3
- package/dist/define.js.map +1 -1
- package/dist/errors.d.ts +3 -6
- package/dist/errors.js +17 -28
- package/dist/errors.js.map +1 -1
- package/dist/execute.d.ts +7 -16
- package/dist/execute.js +11 -14
- package/dist/execute.js.map +1 -1
- package/dist/exit-classes.d.ts +7 -10
- package/dist/exit-classes.js +20 -81
- package/dist/exit-classes.js.map +1 -1
- package/dist/failure.d.ts +36 -0
- package/dist/failure.js +65 -0
- package/dist/failure.js.map +1 -0
- package/dist/help-json.js +5 -3
- package/dist/help-json.js.map +1 -1
- package/dist/help.js +3 -3
- package/dist/help.js.map +1 -1
- package/dist/output.d.ts +3 -10
- package/dist/output.js +14 -24
- package/dist/output.js.map +1 -1
- package/dist/run-cli.js +7 -5
- package/dist/run-cli.js.map +1 -1
- package/dist/run-command.d.ts +6 -1
- package/dist/run-command.js +31 -158
- package/dist/run-command.js.map +1 -1
- package/dist/run-options.d.ts +5 -2
- package/dist/run-scope.d.ts +35 -0
- package/dist/run-scope.js +138 -0
- package/dist/run-scope.js.map +1 -0
- package/dist/runtime-codes.d.ts +140 -1
- package/dist/runtime-codes.js +60 -4
- package/dist/runtime-codes.js.map +1 -1
- package/docs/example/cli.test.ts +9 -2
- package/docs/example/cli.ts +1 -0
- package/docs/example/folder.ts +1 -0
- package/docs/guides/commands.md +1 -1
- package/docs/guides/doctor.md +2 -1
- package/docs/guides/errors.md +1 -1
- package/docs/guides/testing.md +2 -1
- package/package.json +1 -1
- package/dist/command-errors.d.ts +0 -8
- package/dist/command-errors.js +0 -25
- package/dist/command-errors.js.map +0 -1
- package/dist/command-line/route-line.d.ts +0 -15
- package/dist/command-line/route-line.js +0 -18
- package/dist/command-line/route-line.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,33 @@ What changed in each release of `@duyquangnvx/agent-cli` (the Runtime) and `@duy
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## v0.28.0 (2026-11-09)
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `ctx.platform`, also on `PortsBase` and the Side task's run, is the platform the run is on: `process.platform`, or `runCli`'s `platform` in a test, so a Command's own Windows branch runs on any OS.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **Breaking:** `Files` gains a required `realPath(path)`, the path with every symlink resolved or `undefined` when nothing is there, and `FileStat` a required `folder`, whether the path is a folder. A hand-written `Files`, such as a test's fake, fails to compile until it has both.
|
|
16
|
+
- `runCli`'s `platform` option replaces `process.platform` wherever the Runtime reads it, not only in hint wording: a declared tool is looked for with `PATHEXT` under `"win32"`, and the Built-in Commands pick npm's `npm.cmd`, global bin folder and `node_modules` folder by it, so a test runs the Windows branches on any OS.
|
|
17
|
+
- `skill install` fails as a bug (exit 70) when the package lacks its own `SKILL.md`, rather than emptying the project's copy.
|
|
18
|
+
- **Breaking:** a Runtime code only some Commands reach (`NOT_GLOBAL_INSTALL`, `NOT_ON_PATH`, `REGISTRY_UNREACHABLE`, `REGISTRY_AUTH`, `INSTALL_FAILED`, `NPM_FAILED`, `NO_LATEST`, `DOCTOR_PROBLEMS`) goes in the `errors` of each Command that throws it, the Built-in Commands included, as a code of the Error table does; a run ending in one its Command does not declare fails as a bug (exit 70). A code any Command can meet, such as `NOT_FOUND`, still needs no declaration. `--help --json` lists each Built-in Command's `errors` with their classes.
|
|
19
|
+
- **Breaking:** a `DoctorCheck` lists in `errors` the codes of the Error table, and the Runtime codes only some Commands reach, that it fails with, thrown or as its finding's `code`; a row that is not advisory failing with one it does not declare fails `doctor` as a bug (exit 70), and `defineCli` throws on one the table lacks. `doctor`'s `errors` in `--help --json` are `DOCTOR_PROBLEMS` and the codes of every row that is not advisory, rather than the whole Error table.
|
|
20
|
+
- A run failing before its Command starts, at the operator check, parsing its input or reading the Project file, reports `INTERRUPTED` (exit 130 or 143) once it was interrupted, and `DEADLINE_EXCEEDED` once the run deadline ran out, as a failure of the Command itself does, rather than the error the gate threw.
|
|
21
|
+
- The exit codes `--help` lists come from the codes the CLI's Commands declare, the Built-in Commands included, and its Error table: exit 3 shows exactly when one of them has class `source`.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Under `runCli`, a Next step must run as given, as an example must: one that does not pass its Command's schemas, such as one missing a required option or holding `<id>` for a number, fails the run as a bug (exit 70) naming it and why, with the reason `checkExamples` gives for the same line. It used to pass when it only routed to a Command without unknown options.
|
|
26
|
+
- The Built-in Commands read through `ctx.files`, so a Skill copy, `AGENTS.md` or `package.json` that `setup`, `update` or `skill install` may not read fails with `PERMISSION_DENIED` (exit 2) and its hint, as a write there does, rather than with `INTERNAL` (exit 70); `doctor` reports it in the row as `PERMISSION_DENIED` rather than as a bug.
|
|
27
|
+
|
|
28
|
+
### Upgrade from v0.27.0
|
|
29
|
+
|
|
30
|
+
- Give each hand-written `Files` a `realPath` and each `FileStat` it returns a `folder`, as the template's `test/cli.test.ts` does.
|
|
31
|
+
- Add to a Command's `errors` each Runtime code only some Commands reach that it throws, such as `NO_LATEST`.
|
|
32
|
+
- Add to each `doctor` row's `errors` each code of the Error table it throws or returns, its ports' and helpers' included, such as a store row's `CORRUPT_DATA`.
|
|
33
|
+
|
|
7
34
|
## v0.27.0 (2026-11-08)
|
|
8
35
|
|
|
9
36
|
### Added
|
package/dist/agent-cli.js
CHANGED
|
@@ -2,7 +2,7 @@ import { isAbsolute, normalize } from "node:path";
|
|
|
2
2
|
import { builtInCommands } from "./built-ins/commands.js";
|
|
3
3
|
import { commandLabel } from "./command-spec.js";
|
|
4
4
|
import { isCommand, } from "./define.js";
|
|
5
|
-
import { checkCommand, defineCommandFor } from "./define-command.js";
|
|
5
|
+
import { checkCommand, checkErrors, defineCommandFor, } from "./define-command.js";
|
|
6
6
|
import { cliErrorOf, errorTableOf } from "./error-table.js";
|
|
7
7
|
import { runtimeCodesIn } from "./exit-classes.js";
|
|
8
8
|
function checkOwnCodes(errors) {
|
|
@@ -46,7 +46,14 @@ function checkCli(cli) {
|
|
|
46
46
|
checkSkill(cli);
|
|
47
47
|
const { commands } = cli;
|
|
48
48
|
checkTree(commands, [], table);
|
|
49
|
-
const
|
|
49
|
+
for (const row of cli.doctor ?? []) {
|
|
50
|
+
checkErrors(row.errors ?? [], `the ${row.name} row of doctor`, table);
|
|
51
|
+
}
|
|
52
|
+
const taken = Object.keys(builtInCommands(cli, {
|
|
53
|
+
bin: undefined,
|
|
54
|
+
node: undefined,
|
|
55
|
+
platform: process.platform,
|
|
56
|
+
})).filter((name) => commands[name] !== undefined);
|
|
50
57
|
if (taken.length > 0) {
|
|
51
58
|
throw new Error(`${cli.name} defines ${taken.join(", ")}, a built-in Command it cannot replace`);
|
|
52
59
|
}
|
package/dist/agent-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAML,SAAS,GAGV,MAAM,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Files } from "../context/files.js";
|
|
1
2
|
import type { DoctorCheck } from "../define.js";
|
|
2
3
|
import type { Install } from "./install/install.js";
|
|
3
4
|
export interface AgentsSection {
|
|
@@ -13,6 +14,6 @@ export interface AgentsMd {
|
|
|
13
14
|
}
|
|
14
15
|
/** `text` with the CLI's Agents section between its markers, appended when they are missing; nothing else changes. */
|
|
15
16
|
export declare function withSection({ name, text: section }: AgentsSection, text: string): string;
|
|
16
|
-
export declare function agentsMdAt(agents: AgentsSection, root: string): Promise<AgentsMd>;
|
|
17
|
-
export declare function handEditsAt(root: string): Promise<string[]>;
|
|
17
|
+
export declare function agentsMdAt(files: Files, agents: AgentsSection, root: string): Promise<AgentsMd>;
|
|
18
|
+
export declare function handEditsAt(files: Files, root: string): Promise<string[]>;
|
|
18
19
|
export declare function agentsRow(agents: AgentsSection, install: Install): DoctorCheck;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
1
|
import { join } from "node:path";
|
|
3
|
-
import { orMissing } from "../errors.js";
|
|
4
2
|
import { projectRootOf } from "./project-root.js";
|
|
3
|
+
import { readIfAny } from "./read.js";
|
|
5
4
|
function markersOf(name) {
|
|
6
5
|
return { begin: `<!-- BEGIN:${name} -->`, end: `<!-- END:${name} -->` };
|
|
7
6
|
}
|
|
@@ -17,9 +16,9 @@ export function withSection({ name, text: section }, text) {
|
|
|
17
16
|
return `${whole}\n`;
|
|
18
17
|
return `${text}${text.endsWith("\n") ? "" : "\n"}\n${whole}\n`;
|
|
19
18
|
}
|
|
20
|
-
export async function agentsMdAt(agents, root) {
|
|
19
|
+
export async function agentsMdAt(files, agents, root) {
|
|
21
20
|
const path = join(root, "AGENTS.md");
|
|
22
|
-
const existing = await
|
|
21
|
+
const existing = await readIfAny(files, path);
|
|
23
22
|
if (existing === undefined)
|
|
24
23
|
return { path, agents, change: "create" };
|
|
25
24
|
if (withSection(agents, existing) === existing)
|
|
@@ -31,9 +30,9 @@ export async function agentsMdAt(agents, root) {
|
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
32
|
// Claude Code reads AGENTS.md only through an `@AGENTS.md` line, and no CLI edits CLAUDE.md.
|
|
34
|
-
export async function handEditsAt(root) {
|
|
33
|
+
export async function handEditsAt(files, root) {
|
|
35
34
|
const claudeMd = join(root, "CLAUDE.md");
|
|
36
|
-
const text = await
|
|
35
|
+
const text = await readIfAny(files, claudeMd);
|
|
37
36
|
if (text === undefined || text.split(/\r?\n/).some((line) => line.trim() === "@AGENTS.md")) {
|
|
38
37
|
return [];
|
|
39
38
|
}
|
|
@@ -46,8 +45,8 @@ export function agentsRow(agents, install) {
|
|
|
46
45
|
name: "agents",
|
|
47
46
|
advisory: true,
|
|
48
47
|
run: async (ctx) => {
|
|
49
|
-
const root = await projectRootOf(ctx.cwd);
|
|
50
|
-
const { path, change } = await agentsMdAt(agents, root);
|
|
48
|
+
const root = await projectRootOf(ctx.files, ctx.cwd);
|
|
49
|
+
const { path, change } = await agentsMdAt(ctx.files, agents, root);
|
|
51
50
|
const fix = `${install.runAs} skill install`;
|
|
52
51
|
if (change === "rewrite") {
|
|
53
52
|
return {
|
|
@@ -64,7 +63,7 @@ export function agentsRow(agents, install) {
|
|
|
64
63
|
};
|
|
65
64
|
}
|
|
66
65
|
const holds = `${path} holds the ${name} Agents section`;
|
|
67
|
-
const [edit] = await handEditsAt(root);
|
|
66
|
+
const [edit] = await handEditsAt(ctx.files, root);
|
|
68
67
|
return edit === undefined
|
|
69
68
|
? { state: "ok", message: holds }
|
|
70
69
|
: { state: "problem", message: `${holds}; ${edit}` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/built-ins/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/built-ins/agents-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Commands, CommandTreeCli } from "../define.js";
|
|
2
|
-
/** How the CLI was started: the script,
|
|
2
|
+
/** How the CLI was started: the script, the Node running it, and the platform it runs on. */
|
|
3
3
|
export interface Launch {
|
|
4
4
|
readonly bin: string | undefined;
|
|
5
5
|
readonly node: string | undefined;
|
|
6
|
+
readonly platform: NodeJS.Platform;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
9
|
* The Commands the Runtime adds to a multi-Command CLI: `setup` and `update` only for a Global
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/built-ins/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/built-ins/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAS3C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAmB,EAAE,MAAc;IACjE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;QAClC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ;KAClC,CAAC;AACJ,CAAC"}
|
|
@@ -115,7 +115,7 @@ function registryRow(cli, check) {
|
|
|
115
115
|
export function doctorChecks(cli, launch, scope) {
|
|
116
116
|
const install = installOf(cli);
|
|
117
117
|
const check = install.check(launch);
|
|
118
|
-
const tools = toolRows(cli.tools ?? [], cli.commands);
|
|
118
|
+
const tools = toolRows(cli.tools ?? [], cli.commands, launch.platform);
|
|
119
119
|
return {
|
|
120
120
|
checks: [
|
|
121
121
|
buildRow(cli),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-rows.js","sourceRoot":"","sources":["../../src/built-ins/doctor-rows.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor-rows.js","sourceRoot":"","sources":["../../src/built-ins/doctor-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Command, CommandTreeCli } from "../define.js";
|
|
2
2
|
import type { Launch } from "./commands.js";
|
|
3
|
-
export declare const DOCTOR_PROBLEMS = "DOCTOR_PROBLEMS";
|
|
4
3
|
/** The built-in `doctor`: the fixed rows around the CLI's own, each under its own deadline. */
|
|
5
4
|
export declare function doctorCommand(cli: CommandTreeCli, launch: Launch): Command;
|
package/dist/built-ins/doctor.js
CHANGED
|
@@ -2,11 +2,12 @@ import * as z from "zod";
|
|
|
2
2
|
import { untilAborted } from "../abort.js";
|
|
3
3
|
import { missingToolOf } from "../context/spawn.js";
|
|
4
4
|
import { defineCommand } from "../define-command.js";
|
|
5
|
+
import { errorTableOf } from "../error-table.js";
|
|
5
6
|
import { runtimeError } from "../errors.js";
|
|
6
7
|
import { lineOf, wholeLine } from "../next-step.js";
|
|
8
|
+
import { DOCTOR_PROBLEMS, mustDeclare } from "../runtime-codes.js";
|
|
7
9
|
import { doctorChecks, problemOfError, readProject } from "./doctor-rows.js";
|
|
8
10
|
import { runAsOf } from "./install/run-as.js";
|
|
9
|
-
export const DOCTOR_PROBLEMS = "DOCTOR_PROBLEMS";
|
|
10
11
|
const DEFAULT_DEADLINE_MS = 10_000;
|
|
11
12
|
const MS_PER_SECOND = 1000;
|
|
12
13
|
const MIN_LABEL_WIDTH = 8;
|
|
@@ -73,12 +74,12 @@ async function rowOf(check, ctx, { read, runAs, tools }) {
|
|
|
73
74
|
skippedFor(error, { read, tools }) ??
|
|
74
75
|
problemOf(check, error, { signal: ctx.signal, deadline: signal, ms, runAs });
|
|
75
76
|
}
|
|
76
|
-
return { row: { check: check.name, ...finding },
|
|
77
|
+
return { row: { check: check.name, ...finding }, check };
|
|
77
78
|
}
|
|
78
79
|
// An advisory problem never reaches the failure, whose Next step a fixless row's hint may mean.
|
|
79
80
|
function nextOf(checked, doctorLine) {
|
|
80
81
|
const fixes = checked.flatMap(({ row }) => (row.fix === undefined ? [] : [row.fix]));
|
|
81
|
-
const unfixed = checked.some(({ row,
|
|
82
|
+
const unfixed = checked.some(({ row, check }) => check.advisory === true && row.state === "problem" && row.fix === undefined);
|
|
82
83
|
return [...new Set(unfixed ? [...fixes, doctorLine] : fixes)];
|
|
83
84
|
}
|
|
84
85
|
function render({ rows, next }, style) {
|
|
@@ -103,9 +104,20 @@ function failure(cliName, rerun, problems) {
|
|
|
103
104
|
});
|
|
104
105
|
return new AggregateError(errors);
|
|
105
106
|
}
|
|
107
|
+
// doctor declares every row's codes, so the Runtime's own check would miss a row failing with another row's.
|
|
108
|
+
function checkedRows(error, problems, table) {
|
|
109
|
+
const undeclared = problems.flatMap(({ row, check }) => row.code !== undefined && mustDeclare(row.code, table) && !check.errors?.includes(row.code)
|
|
110
|
+
? [`the ${check.name} row failed with ${row.code}`]
|
|
111
|
+
: []);
|
|
112
|
+
if (undeclared.length === 0)
|
|
113
|
+
return error;
|
|
114
|
+
return new Error(`doctor: ${undeclared.join("; ")}, which its errors do not declare`, {
|
|
115
|
+
cause: error,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
106
118
|
/** The built-in `doctor`: the fixed rows around the CLI's own, each under its own deadline. */
|
|
107
119
|
export function doctorCommand(cli, launch) {
|
|
108
|
-
|
|
120
|
+
const doctor = defineCommand({
|
|
109
121
|
description: "check the setup and say what fixes each problem",
|
|
110
122
|
examples: [
|
|
111
123
|
{
|
|
@@ -127,16 +139,17 @@ export function doctorCommand(cli, launch) {
|
|
|
127
139
|
ctx.deliver(report);
|
|
128
140
|
ctx.signal.throwIfAborted();
|
|
129
141
|
}
|
|
130
|
-
const problems = checked
|
|
131
|
-
.filter(({ row, advisory }) => row.state === "problem" && !advisory)
|
|
132
|
-
.map(({ row }) => row);
|
|
142
|
+
const problems = checked.filter(({ row, check }) => row.state === "problem" && check.advisory !== true);
|
|
133
143
|
if (problems.length > 0) {
|
|
134
144
|
ctx.deliver(report);
|
|
135
|
-
throw failure(cli.name, ctx.rerun(), problems);
|
|
145
|
+
throw checkedRows(failure(cli.name, ctx.rerun(), problems.map(({ row }) => row)), problems, errorTableOf(cli));
|
|
136
146
|
}
|
|
137
147
|
return report;
|
|
138
148
|
},
|
|
139
149
|
render,
|
|
140
150
|
});
|
|
151
|
+
// An advisory row never fails doctor, so its codes are not doctor's.
|
|
152
|
+
const rowCodes = (cli.doctor ?? []).flatMap((row) => row.advisory === true ? [] : (row.errors ?? []));
|
|
153
|
+
return { ...doctor, errors: [...new Set([DOCTOR_PROBLEMS, ...rowCodes])] };
|
|
141
154
|
}
|
|
142
155
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/built-ins/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/built-ins/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAmB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC1B,CAAC,CAAC;AASH,SAAS,SAAS,CAChB,KAAkB,EAClB,KAAc,EACd,EACE,MAAM,EACN,QAAQ,EACR,EAAE,EACF,KAAK,GACqE;IAE5E,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,KAAK,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrE,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,0BAA0B,EAAE,GAAG,aAAa,IAAI;SACvE,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,qEAAqE;AACrE,SAAS,UAAU,CAAC,GAAY,EAAE,MAAmB,EAAE,EAAE,IAAI,EAAa;IACxE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,OAAO,EAAE;YACP,GAAG,EAAE,GAAG,EAAE;gBACR,IAAI,CAAC,IAAI,CAAC,EAAE;oBAAE,MAAM,IAAI,CAAC,KAAK,CAAC;gBAC/B,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAOD,2GAA2G;AAC3G,SAAS,UAAU,CACjB,KAAc,EACd,EAAE,IAAI,EAAE,KAAK,EAAoC;IAEjD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,wDAAwD,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,wBAAwB,IAAI,eAAe,EAAE,CAAC;IAC3F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iGAAiG;AACjG,kEAAkE;AAClE,KAAK,UAAU,KAAK,CAClB,KAAkB,EAClB,GAAY,EACZ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAY;IAEhC,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,OAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjF,YAAY,CAAC,MAAM,CAAC;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACzC,OAAO;YACL,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAClC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC;AAED,gGAAgG;AAChG,SAAS,MAAM,CAAC,OAA8B,EAAE,UAAkB;IAChE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,CAChG,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAU,EAAE,KAAY;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7D,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAC5F,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,2FAA2F;AAC3F,SAAS,OAAO,CAAC,OAAe,EAAE,KAAY,EAAE,QAAwB;IACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,IAAI,IAAI,eAAe;YAC7B,OAAO,EAAE,GAAG,OAAO,8BAA8B,KAAK,KAAK,OAAO,EAAE;SACrE,CAAC;QACF,OAAO,YAAY,CACjB,GAAG,KAAK,SAAS;YACf,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,+CAA+C,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;YACnF,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CACpF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,6GAA6G;AAC7G,SAAS,WAAW,CAClB,KAAqB,EACrB,QAA+B,EAC/B,KAAiB;IAEjB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CACrD,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACzF,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,oBAAoB,GAAG,CAAC,IAAI,EAAE,CAAC;QACnD,CAAC,CAAC,EAAE,CACP,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,KAAK,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE;QACpF,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,aAAa,CAAC,GAAmB,EAAE,MAAc;IAC/D,MAAM,MAAM,GAAG,aAAa,CAAC;QAC3B,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE;YACR;gBACE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS;gBAC7B,IAAI,EAAE,mDAAmD;aAC1D;YACD,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,gBAAgB,EAAE,IAAI,EAAE,gCAAgC,EAAE;SACjF;QACD,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAClE,CAAC;YACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACrF,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CACvE,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM,WAAW,CACf,OAAO,CACL,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,KAAK,EAAE,EACX,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAC/B,EACD,QAAQ,EACR,YAAY,CAAC,GAAG,CAAC,CAClB,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM;KACP,CAAC,CAAC;IACH,qEAAqE;IACrE,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAClD,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAChD,CAAC;IACF,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { readFile, realpath } from "node:fs/promises";
|
|
2
1
|
import { join, sep } from "node:path";
|
|
3
2
|
import * as z from "zod";
|
|
4
|
-
import { messageOf
|
|
3
|
+
import { messageOf } from "../../errors.js";
|
|
5
4
|
import { npmContext, scopeOf } from "../npm.js";
|
|
6
|
-
import { ancestorsOf,
|
|
5
|
+
import { ancestorsOf, isInside, lockfileRootOf, manifestIn, } from "../project-root.js";
|
|
6
|
+
import { readIfAny } from "../read.js";
|
|
7
7
|
import { runAsOf } from "./run-as.js";
|
|
8
8
|
// Both upgrades keep a devDependency under devDependencies (npm 12.2, pnpm 12.14). pnpm keeps the pin's style; npm writes the range its save-exact config asks for.
|
|
9
9
|
const LINES = {
|
|
@@ -20,11 +20,11 @@ const LINES = {
|
|
|
20
20
|
};
|
|
21
21
|
const packageSchema = z.object({ version: z.string() });
|
|
22
22
|
// The fix runs at the lockfile's root, so a package.json above it is outside the project. Without a lockfile no fix is given, and the nearest listing still names the project.
|
|
23
|
-
async function manifestListing(name, cwd, root) {
|
|
23
|
+
async function manifestListing(files, name, cwd, root) {
|
|
24
24
|
const dirs = ancestorsOf(cwd);
|
|
25
25
|
const top = root === undefined ? dirs.length : dirs.indexOf(root.dir) + 1;
|
|
26
26
|
for (const dir of dirs.slice(0, top)) {
|
|
27
|
-
const manifest = await manifestIn(dir);
|
|
27
|
+
const manifest = await manifestIn(files, dir);
|
|
28
28
|
if (manifest?.dependencies?.[name] !== undefined ||
|
|
29
29
|
manifest?.devDependencies?.[name] !== undefined) {
|
|
30
30
|
return join(dir, "package.json");
|
|
@@ -32,9 +32,9 @@ async function manifestListing(name, cwd, root) {
|
|
|
32
32
|
}
|
|
33
33
|
return undefined;
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
function versionIn(text) {
|
|
36
36
|
try {
|
|
37
|
-
return packageSchema.parse(JSON.parse(
|
|
37
|
+
return packageSchema.parse(JSON.parse(text)).version;
|
|
38
38
|
}
|
|
39
39
|
catch (error) {
|
|
40
40
|
if (error instanceof SyntaxError || error instanceof z.ZodError) {
|
|
@@ -43,31 +43,32 @@ async function versionIn(manifest) {
|
|
|
43
43
|
throw error;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
async function standingOf(install, bin, cwd, root) {
|
|
46
|
+
async function standingOf(files, install, bin, cwd, root) {
|
|
47
47
|
if (bin === undefined)
|
|
48
48
|
return { kind: "source" };
|
|
49
49
|
for (const projectDir of ancestorsOf(cwd)) {
|
|
50
50
|
const folder = join(projectDir, "node_modules", install.package);
|
|
51
51
|
const manifest = join(folder, "package.json");
|
|
52
|
-
|
|
52
|
+
const text = await readIfAny(files, manifest);
|
|
53
|
+
if (text === undefined)
|
|
53
54
|
continue;
|
|
54
|
-
const version =
|
|
55
|
+
const version = versionIn(text);
|
|
55
56
|
if (typeof version !== "string")
|
|
56
57
|
return { kind: "unreadable", manifest, ...version };
|
|
57
|
-
const copy = { projectDir, realDir: await
|
|
58
|
+
const copy = { projectDir, realDir: (await files.realPath(folder)) ?? folder, version };
|
|
58
59
|
if (!copy.realDir.split(sep).includes("node_modules"))
|
|
59
60
|
return { kind: "linked", copy };
|
|
60
|
-
const runningFrom = (await
|
|
61
|
+
const runningFrom = (await files.realPath(bin)) ?? bin;
|
|
61
62
|
return isInside(copy.realDir, runningFrom)
|
|
62
63
|
? { kind: "installed", copy }
|
|
63
64
|
: { kind: "other", copy, runningFrom };
|
|
64
65
|
}
|
|
65
|
-
const manifest = await manifestListing(install.package, cwd, root);
|
|
66
|
+
const manifest = await manifestListing(files, install.package, cwd, root);
|
|
66
67
|
return manifest === undefined ? { kind: "missing" } : { kind: "listed", manifest };
|
|
67
68
|
}
|
|
68
|
-
async function surveyDependency(install, bin, cwd) {
|
|
69
|
-
const root = await lockfileRootOf(cwd);
|
|
70
|
-
return { cwd, root, standing: await standingOf(install, bin, cwd, root) };
|
|
69
|
+
async function surveyDependency(install, bin, { files, cwd }) {
|
|
70
|
+
const root = await lockfileRootOf(files, cwd);
|
|
71
|
+
return { cwd, root, standing: await standingOf(files, install, bin, cwd, root) };
|
|
71
72
|
}
|
|
72
73
|
function packagesOf(install) {
|
|
73
74
|
return [install.package, ...(install.lockstep ?? [])];
|
|
@@ -144,20 +145,20 @@ function adviceFor(install, root, latest) {
|
|
|
144
145
|
}
|
|
145
146
|
// npm reads the .npmrc of the nearest folder holding a package.json, so it runs at the lockfile's root (ADR 0010).
|
|
146
147
|
// Both `doctor` rows read one survey, made by whichever asks first.
|
|
147
|
-
function checkOf(cli, install, runAs,
|
|
148
|
+
function checkOf(cli, install, runAs, launch) {
|
|
148
149
|
let survey;
|
|
149
|
-
const surveyed = (
|
|
150
|
-
survey ??= surveyDependency(install, bin,
|
|
150
|
+
const surveyed = (ctx) => {
|
|
151
|
+
survey ??= surveyDependency(install, launch.bin, ctx);
|
|
151
152
|
return survey;
|
|
152
153
|
};
|
|
153
154
|
return {
|
|
154
|
-
install: async (ctx) => installFinding(cli, runAs, install, await surveyed(ctx
|
|
155
|
+
install: async (ctx) => installFinding(cli, runAs, install, await surveyed(ctx)),
|
|
155
156
|
release: async (ctx) => {
|
|
156
|
-
const { cwd, root, standing } = await surveyed(ctx
|
|
157
|
+
const { cwd, root, standing } = await surveyed(ctx);
|
|
157
158
|
if (isUnchecked(standing))
|
|
158
159
|
return { skipped: skippedFor(cli, install, standing) };
|
|
159
160
|
return {
|
|
160
|
-
npm: npmContext(cli, registryOf(install, root?.dir), ctx,
|
|
161
|
+
npm: npmContext(cli, registryOf(install, root?.dir), ctx, launch, root?.dir ?? cwd),
|
|
161
162
|
advise: (latest) => adviceFor(install, root, latest),
|
|
162
163
|
};
|
|
163
164
|
},
|
|
@@ -169,7 +170,6 @@ export function dependencyInstall(cli, install) {
|
|
|
169
170
|
return {
|
|
170
171
|
runAs,
|
|
171
172
|
builtIns: () => ({}),
|
|
172
|
-
exitClasses: [],
|
|
173
173
|
check: (launch) => checkOf(cli, install, runAs, launch),
|
|
174
174
|
// `doctor` reports a newer release, since moving a pinned one is the team's decision (ADR 0010).
|
|
175
175
|
notice: async () => { },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../../src/built-ins/install/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../../src/built-ins/install/dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import type { Files } from "../../context/files.js";
|
|
1
2
|
import type { Context } from "../../context.js";
|
|
2
3
|
import type { GlobalInstall } from "../../define.js";
|
|
4
|
+
import type { Launch } from "../commands.js";
|
|
3
5
|
import { type NpmContext } from "../npm.js";
|
|
4
6
|
import type { InstallCli } from "./install.js";
|
|
5
|
-
export declare const NOT_GLOBAL_INSTALL = "NOT_GLOBAL_INSTALL";
|
|
6
7
|
/** Where npm installed this copy of the CLI globally. */
|
|
7
8
|
export interface InstalledCopy {
|
|
8
9
|
readonly prefix: string;
|
|
9
10
|
readonly packageDir: string;
|
|
10
11
|
}
|
|
11
12
|
/** Where npm puts global packages under its global prefix. */
|
|
12
|
-
export declare function globalModulesDir(prefix: string): string;
|
|
13
|
+
export declare function globalModulesDir(prefix: string, platform: NodeJS.Platform): string;
|
|
14
|
+
/** Whether `path` itself is a symlink, which a link in a folder above it does not make it. */
|
|
15
|
+
export declare function isLink(files: Files, path: string): Promise<boolean>;
|
|
13
16
|
/**
|
|
14
17
|
* The global npm install this copy runs from, found by asking npm for its global prefix.
|
|
15
18
|
* `bin` is the script that started the CLI; throws `NOT_GLOBAL_INSTALL` when it is not inside that install.
|
|
@@ -18,4 +21,4 @@ export declare function globalInstallOf(bin: string | undefined, ctx: NpmContext
|
|
|
18
21
|
/** The line that sets a Global install up, run before the CLI is on the machine. */
|
|
19
22
|
export declare function setupLineOf(install: GlobalInstall): string;
|
|
20
23
|
/** npm for a Global install, run in the working directory. */
|
|
21
|
-
export declare function globalNpm(cli: InstallCli, install: GlobalInstall, ctx: Context,
|
|
24
|
+
export declare function globalNpm(cli: InstallCli, install: GlobalInstall, ctx: Context, launch: Pick<Launch, "node" | "platform">): NpmContext;
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { orMissing, runtimeError } from "../../errors.js";
|
|
1
|
+
import { basename, dirname, join } from "node:path";
|
|
2
|
+
import { runtimeError } from "../../errors.js";
|
|
4
3
|
import { wholeLine } from "../../next-step.js";
|
|
4
|
+
import { NOT_GLOBAL_INSTALL } from "../../runtime-codes.js";
|
|
5
5
|
import { globalPrefix, npmContext, scopeOf, setupCommandLine, } from "../npm.js";
|
|
6
6
|
import { isInside } from "../project-root.js";
|
|
7
|
-
export const NOT_GLOBAL_INSTALL = "NOT_GLOBAL_INSTALL";
|
|
8
7
|
/** Where npm puts global packages under its global prefix. */
|
|
9
|
-
export function globalModulesDir(prefix) {
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export function globalModulesDir(prefix, platform) {
|
|
9
|
+
return platform === "win32" ? join(prefix, "node_modules") : join(prefix, "lib", "node_modules");
|
|
10
|
+
}
|
|
11
|
+
/** Whether `path` itself is a symlink, which a link in a folder above it does not make it. */
|
|
12
|
+
export async function isLink(files, path) {
|
|
13
|
+
const real = await files.realPath(path);
|
|
14
|
+
if (real === undefined)
|
|
15
|
+
return false;
|
|
16
|
+
const folder = await files.realPath(dirname(path));
|
|
17
|
+
return folder === undefined || real !== join(folder, basename(path));
|
|
13
18
|
}
|
|
14
19
|
function notGlobal(ctx, message) {
|
|
15
20
|
return runtimeError({
|
|
@@ -28,14 +33,14 @@ export async function globalInstallOf(bin, ctx) {
|
|
|
28
33
|
throw notGlobal(ctx, `${ctx.cliName} runs from source, not from an npm install`);
|
|
29
34
|
}
|
|
30
35
|
const prefix = await globalPrefix(ctx);
|
|
31
|
-
const packageDir = join(globalModulesDir(prefix), ctx.registry.package);
|
|
32
|
-
const installed = await
|
|
33
|
-
const here = (await
|
|
36
|
+
const packageDir = join(globalModulesDir(prefix, ctx.platform), ctx.registry.package);
|
|
37
|
+
const installed = await ctx.files.realPath(packageDir);
|
|
38
|
+
const here = (await ctx.files.realPath(bin)) ?? bin;
|
|
34
39
|
if (installed === undefined || !isInside(installed, here)) {
|
|
35
40
|
throw notGlobal(ctx, `${ctx.cliName} runs from ${here}, not from npm's global install at ${packageDir}`);
|
|
36
41
|
}
|
|
37
42
|
// `npm link` puts a symlink to a source checkout where the install would be.
|
|
38
|
-
if (
|
|
43
|
+
if (await isLink(ctx.files, packageDir)) {
|
|
39
44
|
throw notGlobal(ctx, `${ctx.cliName} runs from a link to ${installed} (npm link), not from an npm install`);
|
|
40
45
|
}
|
|
41
46
|
return { prefix, packageDir };
|
|
@@ -64,7 +69,7 @@ function globalRegistry(install) {
|
|
|
64
69
|
};
|
|
65
70
|
}
|
|
66
71
|
/** npm for a Global install, run in the working directory. */
|
|
67
|
-
export function globalNpm(cli, install, ctx,
|
|
68
|
-
return npmContext(cli, globalRegistry(install), ctx,
|
|
72
|
+
export function globalNpm(cli, install, ctx, launch) {
|
|
73
|
+
return npmContext(cli, globalRegistry(install), ctx, launch, ctx.cwd);
|
|
69
74
|
}
|
|
70
75
|
//# sourceMappingURL=global-npm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-npm.js","sourceRoot":"","sources":["../../../src/built-ins/install/global-npm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"global-npm.js","sourceRoot":"","sources":["../../../src/built-ins/install/global-npm.ts"],"names":[],"mappings":"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"}
|