craftar 0.27.1 → 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/README.md +67 -18
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/doctor.js +17 -10
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/forge.js +9 -11
- package/dist/core/forge.js.map +1 -1
- package/dist/core/impact.js +2 -4
- package/dist/core/impact.js.map +1 -1
- package/dist/core/mcp-server.js +244 -0
- package/dist/core/mcp-server.js.map +1 -0
- package/dist/core/param-writes.js +11 -6
- package/dist/core/param-writes.js.map +1 -1
- package/dist/core/proc.js +49 -18
- package/dist/core/proc.js.map +1 -1
- package/dist/core/remote.js +89 -4
- package/dist/core/remote.js.map +1 -1
- package/dist/core/sync.js +11 -0
- package/dist/core/sync.js.map +1 -1
- package/dist/core/template-import.js +13 -3
- package/dist/core/template-import.js.map +1 -1
- package/dist/core/unify.js +7 -3
- package/dist/core/unify.js.map +1 -1
- package/dist/emitters/shared.js +25 -1
- package/dist/emitters/shared.js.map +1 -1
- package/dist/importers/claude-code.js +5 -33
- package/dist/importers/claude-code.js.map +1 -1
- package/dist/importers/decide.js +29 -10
- package/dist/importers/decide.js.map +1 -1
- package/dist/schema/index.js +3 -1
- package/dist/schema/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server rendering and credential checking (spec 34).
|
|
3
|
+
* The one place a server is rendered or scanned for placeholders.
|
|
4
|
+
*/
|
|
5
|
+
import { FORGE_SCHEMA_SERVER_PARAMS } from "../schema/index.js";
|
|
6
|
+
import { findSecrets, looksLikeSecretValue, secretValueKind } from "./secrets.js";
|
|
7
|
+
import { urlCredentialIn } from "./remote.js";
|
|
8
|
+
/** The placeholder pattern, same as `substitute`'s in resolve.ts. */
|
|
9
|
+
const PLACEHOLDER = /\{\{\s*([A-Za-z0-9_.]+)\s*\}\}/g;
|
|
10
|
+
/**
|
|
11
|
+
* A YAML alias can make a server refer back to itself, and a walk would not end. Worded as `fingerprintOf` words it, behind
|
|
12
|
+
* the ingredient's ref — as every message about a server starts.
|
|
13
|
+
*/
|
|
14
|
+
const cyclic = (meta) => new Error(`${meta.type}/${meta.name}: ingredient metadata is cyclic (a YAML alias refers back to itself)`);
|
|
15
|
+
/** Whether this Forge's servers are rendered (spec 34 §4.1: schema 4 or above). */
|
|
16
|
+
export function rendersServers(manifest) {
|
|
17
|
+
return manifest.schema >= FORGE_SCHEMA_SERVER_PARAMS;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Render an MCP server by substituting its declared params.
|
|
21
|
+
* Returns the same object when nothing is substituted.
|
|
22
|
+
*/
|
|
23
|
+
export function renderServer(meta, params) {
|
|
24
|
+
const declared = meta.params ?? {};
|
|
25
|
+
const missing = [];
|
|
26
|
+
const undeclared = [];
|
|
27
|
+
const substituted = [];
|
|
28
|
+
const missingSeen = new Set();
|
|
29
|
+
const undeclaredSeen = new Set();
|
|
30
|
+
/**
|
|
31
|
+
* Walk a value, substituting string leaves. Returns the same object when nothing changed,
|
|
32
|
+
* a new object (on null prototype) when something did.
|
|
33
|
+
*/
|
|
34
|
+
const ancestors = new Set();
|
|
35
|
+
function walk(value, path, under) {
|
|
36
|
+
if (typeof value === "string") {
|
|
37
|
+
let changed = false;
|
|
38
|
+
// One replace per leaf, no second pass on substituted text.
|
|
39
|
+
const result = value.replace(PLACEHOLDER, (match, key) => {
|
|
40
|
+
// Own properties only — never follow a prototype.
|
|
41
|
+
const isDeclared = Object.hasOwn(declared, key);
|
|
42
|
+
const isValued = Object.hasOwn(params, key);
|
|
43
|
+
if (isDeclared && isValued) {
|
|
44
|
+
// Declared and valued → substitute
|
|
45
|
+
changed = true;
|
|
46
|
+
return String(params[key]);
|
|
47
|
+
}
|
|
48
|
+
if (isDeclared && !isValued) {
|
|
49
|
+
// Declared, no value → left, added to missing
|
|
50
|
+
if (!missingSeen.has(key)) {
|
|
51
|
+
missingSeen.add(key);
|
|
52
|
+
missing.push(key);
|
|
53
|
+
}
|
|
54
|
+
return match;
|
|
55
|
+
}
|
|
56
|
+
if (!isDeclared && isValued) {
|
|
57
|
+
// Undeclared, valued → left, added to undeclared
|
|
58
|
+
if (!undeclaredSeen.has(key)) {
|
|
59
|
+
undeclaredSeen.add(key);
|
|
60
|
+
undeclared.push(key);
|
|
61
|
+
}
|
|
62
|
+
return match;
|
|
63
|
+
}
|
|
64
|
+
// Undeclared, no value → left, said nowhere
|
|
65
|
+
return match;
|
|
66
|
+
});
|
|
67
|
+
if (changed) {
|
|
68
|
+
substituted.push({ path, under, value: result });
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
if (value === null || typeof value !== "object")
|
|
74
|
+
return value; // numbers, booleans, null — as they are
|
|
75
|
+
if (ancestors.has(value))
|
|
76
|
+
throw cyclic(meta);
|
|
77
|
+
ancestors.add(value);
|
|
78
|
+
try {
|
|
79
|
+
return Array.isArray(value) ? walkArray(value, path, under) : walkObject(value, path, under);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
ancestors.delete(value);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function walkArray(value, path, under) {
|
|
86
|
+
let changed = false;
|
|
87
|
+
const items = [];
|
|
88
|
+
for (let i = 0; i < value.length; i++) {
|
|
89
|
+
const item = walk(value[i], `${path}[${i}]`, under);
|
|
90
|
+
items.push(item);
|
|
91
|
+
if (item !== value[i])
|
|
92
|
+
changed = true;
|
|
93
|
+
}
|
|
94
|
+
return changed ? items : value;
|
|
95
|
+
}
|
|
96
|
+
function walkObject(value, path, under) {
|
|
97
|
+
let changed = false;
|
|
98
|
+
// A null prototype, so a `__proto__` key stays an entry; own enumerable keys only, in the source's order.
|
|
99
|
+
const result = Object.create(null);
|
|
100
|
+
for (const k of Object.keys(value)) {
|
|
101
|
+
const v = walk(value[k], path ? `${path}.${k}` : k, path ? under : k);
|
|
102
|
+
result[k] = v;
|
|
103
|
+
if (v !== value[k])
|
|
104
|
+
changed = true;
|
|
105
|
+
}
|
|
106
|
+
return changed ? result : value;
|
|
107
|
+
}
|
|
108
|
+
const server = walk(meta.server, "", "");
|
|
109
|
+
return {
|
|
110
|
+
server,
|
|
111
|
+
missing,
|
|
112
|
+
undeclared,
|
|
113
|
+
substituted,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** The keys a server's string values cite, once each, in the server's own order, depth first. [] for a non-mcp ingredient. */
|
|
117
|
+
export function serverCitations(meta) {
|
|
118
|
+
if (meta.type !== "mcp")
|
|
119
|
+
return [];
|
|
120
|
+
const declared = meta.params ?? {};
|
|
121
|
+
const result = [];
|
|
122
|
+
const seen = new Set();
|
|
123
|
+
const ancestors = new Set();
|
|
124
|
+
function walk(value) {
|
|
125
|
+
if (typeof value === "string") {
|
|
126
|
+
// Find all placeholders in this string
|
|
127
|
+
let match;
|
|
128
|
+
const re = new RegExp(PLACEHOLDER.source, "g");
|
|
129
|
+
while ((match = re.exec(value)) !== null) {
|
|
130
|
+
const key = match[1];
|
|
131
|
+
if (!seen.has(key)) {
|
|
132
|
+
seen.add(key);
|
|
133
|
+
result.push({ key, declared: Object.hasOwn(declared, key) });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (value === null || typeof value !== "object")
|
|
139
|
+
return;
|
|
140
|
+
if (ancestors.has(value))
|
|
141
|
+
throw cyclic(meta);
|
|
142
|
+
ancestors.add(value);
|
|
143
|
+
// Walk values only, not keys (keys are never scanned for placeholders)
|
|
144
|
+
for (const v of Array.isArray(value) ? value : Object.keys(value).map((k) => value[k]))
|
|
145
|
+
walk(v);
|
|
146
|
+
ancestors.delete(value);
|
|
147
|
+
}
|
|
148
|
+
walk(meta.server);
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check the substituted leaves of a rendered server for credentials.
|
|
153
|
+
* Row U (URL credentials) is tried before row T (token patterns).
|
|
154
|
+
* Row E (entropy) applies only to leaves under `env` or `args`.
|
|
155
|
+
*/
|
|
156
|
+
export function credentialIn(substituted) {
|
|
157
|
+
const warnings = [];
|
|
158
|
+
for (const leaf of substituted) {
|
|
159
|
+
// Row U: URL with credentials (tried before row T)
|
|
160
|
+
if (urlCredentialIn(leaf.value)) {
|
|
161
|
+
return { error: { path: leaf.path, kind: "url-credentials" }, warnings: [] };
|
|
162
|
+
}
|
|
163
|
+
// Row T: Token of a known format
|
|
164
|
+
const tokenHit = findSecrets(leaf.value)[0];
|
|
165
|
+
if (tokenHit) {
|
|
166
|
+
return { error: { path: leaf.path, kind: tokenHit.kind }, warnings: [] };
|
|
167
|
+
}
|
|
168
|
+
// Row E: High-entropy value, only under env or args
|
|
169
|
+
if ((leaf.under === "env" || leaf.under === "args") && looksLikeSecretValue(leaf.value)) {
|
|
170
|
+
warnings.push({ path: leaf.path, kind: "high-entropy-value" });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return { error: null, warnings };
|
|
174
|
+
}
|
|
175
|
+
/** Build the error message for a credential found in a rendered server. */
|
|
176
|
+
export function credentialMessage(ref, f) {
|
|
177
|
+
// Row U gets a different verb ("holds a URL with credentials") than row T ("looks like a credential")
|
|
178
|
+
if (f.kind === "url-credentials") {
|
|
179
|
+
return `${ref}: the value rendered into server.${f.path} holds a URL with credentials (${f.kind}) — a generated file is committed, so a secret cannot come from a param; have the server read it from the environment`;
|
|
180
|
+
}
|
|
181
|
+
return `${ref}: the value rendered into server.${f.path} looks like a credential (${f.kind}) — a generated file is committed, so a secret cannot come from a param; have the server read it from the environment`;
|
|
182
|
+
}
|
|
183
|
+
/** Build the warning message for a high-entropy value (row E). */
|
|
184
|
+
export function entropyMessage(ref, f) {
|
|
185
|
+
return `${ref}: the value rendered into server.${f.path} may be a secret (${f.kind}) — a generated file is committed; if it is one, have the server read it from the environment`;
|
|
186
|
+
}
|
|
187
|
+
/** Build the warning message for an undeclared key with a value. */
|
|
188
|
+
export function undeclaredMessage(ref, key) {
|
|
189
|
+
return `${ref}: server cites {{${key}}}, which has a value but is not declared in the ingredient's params — left verbatim`;
|
|
190
|
+
}
|
|
191
|
+
/** Import's scan of a server it read (moved from the importer, messages unchanged). */
|
|
192
|
+
export function serverSecret(serverName, server) {
|
|
193
|
+
for (const [key, value] of Object.entries(server)) {
|
|
194
|
+
const hit = secretInServerField(serverName, key, value, key === "env" || key === "args");
|
|
195
|
+
if (hit)
|
|
196
|
+
return hit;
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
/** Recursively scan one MCP server field for a secret-like value, building a dotted/bracketed field path. */
|
|
201
|
+
function secretInServerField(server, field, value, useEntropy) {
|
|
202
|
+
if (Array.isArray(value)) {
|
|
203
|
+
for (const [i, v] of value.entries()) {
|
|
204
|
+
const hit = secretInServerField(server, `${field}[${i}]`, v, useEntropy);
|
|
205
|
+
if (hit)
|
|
206
|
+
return hit;
|
|
207
|
+
}
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
if (value !== null && typeof value === "object") {
|
|
211
|
+
for (const [k, v] of Object.entries(value)) {
|
|
212
|
+
const hit = secretInServerField(server, `${field}.${k}`, v, useEntropy);
|
|
213
|
+
if (hit)
|
|
214
|
+
return hit;
|
|
215
|
+
}
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
if (typeof value !== "string" && typeof value !== "number")
|
|
219
|
+
return null;
|
|
220
|
+
const kind = useEntropy ? secretValueKind(String(value)) : (findSecrets(String(value))[0]?.kind ?? null);
|
|
221
|
+
return kind ? `secret-like value (${kind}) in .mcp.json → mcpServers.${server}.${field}` : null;
|
|
222
|
+
}
|
|
223
|
+
/** Whether `unify`'s kept-variant warning gets its second line (spec 34 §5.2). */
|
|
224
|
+
export function holdsBaseCitations(base, variant) {
|
|
225
|
+
// Both must be mcp
|
|
226
|
+
if (base.type !== "mcp" || variant.type !== "mcp")
|
|
227
|
+
return false;
|
|
228
|
+
// The base must declare at least one key
|
|
229
|
+
const baseParams = base.params;
|
|
230
|
+
if (!baseParams || Object.keys(baseParams).length === 0)
|
|
231
|
+
return false;
|
|
232
|
+
// The variant must have no params key (undefined, not empty {})
|
|
233
|
+
if (variant.params !== undefined)
|
|
234
|
+
return false;
|
|
235
|
+
// A key the variant's server cites must be one of the base's declared keys
|
|
236
|
+
const variantCitations = serverCitations(variant);
|
|
237
|
+
const baseDeclared = new Set(Object.keys(baseParams));
|
|
238
|
+
for (const cite of variantCitations) {
|
|
239
|
+
if (baseDeclared.has(cite.key))
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { IngredientSchema, ProfileSchema, WorkspaceConfigSchema } from "../schem
|
|
|
5
5
|
import { placeholders, bodyFile } from "./extract.js";
|
|
6
6
|
import { exists, listFiles, readIngredientText, FORGE_MANIFEST } from "./forge.js";
|
|
7
7
|
import { manifestWithSections } from "./manifest-edit.js";
|
|
8
|
+
import { rendersServers, serverCitations } from "./mcp-server.js";
|
|
8
9
|
import { resolve, sectionKey } from "./resolve.js";
|
|
9
10
|
import { errorText } from "./schema-fault.js";
|
|
10
11
|
import { canonicalValue } from "./sections.js";
|
|
@@ -45,15 +46,19 @@ export function resolvedBy(forge, profile) {
|
|
|
45
46
|
const r = resolve(forge, WorkspaceConfigSchema.parse({ forge: ".", profile }));
|
|
46
47
|
return new Set(r.ingredients.map((i) => i.ref));
|
|
47
48
|
}
|
|
48
|
-
/**
|
|
49
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Whether any body file an ingredient reads through `ctx.text` cites `{{key}}` — or, in a Forge whose servers are
|
|
51
|
+
* rendered (`schema`, spec 34 §5.2), whether its MCP server cites it as a key the ingredient declares: an undeclared
|
|
52
|
+
* citation is never substituted, so a value under it moves no byte.
|
|
53
|
+
*/
|
|
54
|
+
async function cites(ing, key, schema) {
|
|
50
55
|
for (const rel of await listFiles(ing.dir)) {
|
|
51
56
|
if (rel === "ingredient.yaml" || !bodyFile(ing.meta, rel, ing.dir))
|
|
52
57
|
continue;
|
|
53
58
|
if (placeholders(await readIngredientText(ing, rel)).includes(key))
|
|
54
59
|
return true;
|
|
55
60
|
}
|
|
56
|
-
return
|
|
61
|
+
return rendersServers({ schema }) && serverCitations(ing.meta).some((c) => c.declared && c.key === key);
|
|
57
62
|
}
|
|
58
63
|
/**
|
|
59
64
|
* Spec 11 §6.11: a section value can cite `{{key}}` (sections expand before params), so a scan over
|
|
@@ -92,7 +97,7 @@ export async function checkParamWrites(forge, base, variant, profile, extraction
|
|
|
92
97
|
if (!decl)
|
|
93
98
|
declare.push(e);
|
|
94
99
|
// P14: an undeclared {{key}} already in the base, or any in the variant, would start resolving.
|
|
95
|
-
if (!decl && (await cites(base, e.key)))
|
|
100
|
+
if (!decl && (await cites(base, e.key, forge.manifest.schema)))
|
|
96
101
|
throw new Error(`unify: ${base.ref} already uses {{${e.key}}}`);
|
|
97
102
|
// …and so would one in any profile's section value for the base's key: the default reaches every profile (spec 11 §6.11).
|
|
98
103
|
for (const [q, p] of decl ? [] : forge.profiles) {
|
|
@@ -100,7 +105,7 @@ export async function checkParamWrites(forge, base, variant, profile, extraction
|
|
|
100
105
|
if (where)
|
|
101
106
|
throw new Error(`unify: profile ${q} ${where} already uses {{${e.key}}}`);
|
|
102
107
|
}
|
|
103
|
-
if (await cites(variant, e.key))
|
|
108
|
+
if (await cites(variant, e.key, forge.manifest.schema))
|
|
104
109
|
throw new Error(`unify: ${variant.ref} already uses {{${e.key}}}`);
|
|
105
110
|
// P15, P16: a stronger layer that sets the key would override the base's default. Not for a
|
|
106
111
|
// reused key: the base already renders {{key}} through every layer, so nothing it sees moves.
|
|
@@ -129,7 +134,7 @@ export async function checkParamWrites(forge, base, variant, profile, extraction
|
|
|
129
134
|
for (const ing of forge.ingredients.values()) {
|
|
130
135
|
if (ing.ref === base.ref || ing.ref === variant.ref)
|
|
131
136
|
continue;
|
|
132
|
-
if (await cites(ing, e.key))
|
|
137
|
+
if (await cites(ing, e.key, forge.manifest.schema))
|
|
133
138
|
throw new Error(`unify: ${ing.ref} also uses {{${e.key}}} under profile ${profile} — its text would change`);
|
|
134
139
|
}
|
|
135
140
|
// …and so would the profile's own section values (spec 11 §6.11). Every key a Forge ingredient
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"param-writes.js","sourceRoot":"","sources":["../../src/core/param-writes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"param-writes.js","sourceRoot":"","sources":["../../src/core/param-writes.ts"],"names":[],"mappings":"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"}
|
package/dist/core/proc.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* External-process execution (design D3):
|
|
3
|
-
*
|
|
2
|
+
* External-process execution (design D3): every external program craftar runs — git, dotnet — is run
|
|
3
|
+
* from here; `process.env` is read only as `execProgram`'s default. capture (stdout of a finished process,
|
|
4
|
+
* execFile), execProgram (stdout and stderr, resolved by onPath) and spawnInherited (inherited output, spawn).
|
|
5
|
+
* A program is resolved by onPath before it is run. No shell.
|
|
4
6
|
*/
|
|
5
7
|
import { execFile, spawn } from "node:child_process";
|
|
8
|
+
import { promisify } from "node:util";
|
|
6
9
|
import { promises as fs, constants } from "node:fs";
|
|
7
10
|
import path from "node:path";
|
|
8
11
|
/** A wedged probe should not hang doctor forever. */
|
|
@@ -35,6 +38,32 @@ export function pathEntries(value, win = WIN) {
|
|
|
35
38
|
}
|
|
36
39
|
return entries;
|
|
37
40
|
}
|
|
41
|
+
/** The PATH value from `env`, reading the key as `onPath` reads it (on win32: whatever case). */
|
|
42
|
+
function pathOf(env) {
|
|
43
|
+
const key = WIN ? Object.keys(env).find((k) => k.toUpperCase() === "PATH") : "PATH";
|
|
44
|
+
return key === undefined ? undefined : env[key];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* `env` with its PATH reduced to the entries `onPath` looks in, so that what the program starts in turn (git
|
|
48
|
+
* starts ssh, a credential helper, a hook) is not looked for in the working directory either. When no absolute
|
|
49
|
+
* entry is left, off Windows the child gets NO PATH: an empty one makes the platform look in the working
|
|
50
|
+
* directory, an absent one makes it use its default path. On win32 the key is always set, empty if need be: Node
|
|
51
|
+
* gives a child with no PATH key the parent's own, unfiltered (read in libuv, not measured). No caller reaches
|
|
52
|
+
* that case today — a bare `git` or `dotnet` is not found first. A copy: the caller's object is not changed.
|
|
53
|
+
* Only the PATH key is replaced — on win32 every spelling of it, by one `PATH`; elsewhere `Path` and `path` are
|
|
54
|
+
* other variables.
|
|
55
|
+
*/
|
|
56
|
+
function childEnv(env) {
|
|
57
|
+
const result = {};
|
|
58
|
+
for (const [k, v] of Object.entries(env)) {
|
|
59
|
+
if ((WIN ? k.toUpperCase() : k) !== "PATH")
|
|
60
|
+
result[k] = v;
|
|
61
|
+
}
|
|
62
|
+
const entries = pathEntries(pathOf(env) ?? "");
|
|
63
|
+
if (WIN || entries.length > 0)
|
|
64
|
+
result.PATH = entries.join(path.delimiter);
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
38
67
|
/** A file; off win32 also executable; any error → false. */
|
|
39
68
|
async function isProgram(file) {
|
|
40
69
|
try {
|
|
@@ -54,14 +83,15 @@ async function isProgram(file) {
|
|
|
54
83
|
* The platform's own lookup is not used: it also searches the child's working directory (on Windows always; elsewhere
|
|
55
84
|
* for an empty or relative PATH entry), and craftar runs `dotnet` with the workspace root as working directory
|
|
56
85
|
* (spec 32 §7: a program is found on PATH only). An absolute `file` is returned as given; a relative path is null.
|
|
86
|
+
* The first candidate that is an executable file is taken — unlike the platform, craftar does not go on to the
|
|
87
|
+
* next entry when that file then fails to start.
|
|
57
88
|
*/
|
|
58
89
|
export async function onPath(file, env) {
|
|
59
90
|
if (path.isAbsolute(file))
|
|
60
91
|
return file;
|
|
61
92
|
if (file === "" || file !== path.basename(file))
|
|
62
93
|
return null;
|
|
63
|
-
const
|
|
64
|
-
const entries = pathEntries((key === undefined ? undefined : env[key]) ?? "");
|
|
94
|
+
const entries = pathEntries(pathOf(env) ?? "");
|
|
65
95
|
const names = WIN && !WIN_EXTENSIONS.some((ext) => file.toLowerCase().endsWith(ext)) ? WIN_EXTENSIONS.map((ext) => file + ext) : [file];
|
|
66
96
|
for (const entry of entries) {
|
|
67
97
|
for (const name of names) {
|
|
@@ -72,24 +102,25 @@ export async function onPath(file, env) {
|
|
|
72
102
|
}
|
|
73
103
|
return null;
|
|
74
104
|
}
|
|
75
|
-
/** Reject with an ENOENT error for a file not on PATH. */
|
|
105
|
+
/** Reject with an ENOENT error for a file not on PATH, matching what Node gives for a program it cannot find. */
|
|
76
106
|
function notOnPath(file) {
|
|
77
|
-
return Object.assign(new Error(
|
|
107
|
+
return Object.assign(new Error(`spawn ${file} ENOENT`), { code: "ENOENT", errno: -2, syscall: `spawn ${file}`, path: file });
|
|
78
108
|
}
|
|
79
|
-
/**
|
|
80
|
-
|
|
109
|
+
/**
|
|
110
|
+
* stdout and stderr of a program that exited 0, the program resolved by `onPath` over `opts.env` (the process's
|
|
111
|
+
* environment when none is given) — never by the platform's lookup. Rejects as `execFile` does: with `code`,
|
|
112
|
+
* `stdout` and `stderr` on a non-zero exit, and with `code: "ENOENT"` when the program is on no absolute PATH entry.
|
|
113
|
+
*/
|
|
114
|
+
export async function execProgram(file, args, opts = {}) {
|
|
115
|
+
const env = opts.env ?? process.env;
|
|
81
116
|
const program = await onPath(file, env);
|
|
82
117
|
if (program === null)
|
|
83
118
|
throw notOnPath(file);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
resolve(stdout);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
};
|
|
119
|
+
const { stdout, stderr } = await promisify(execFile)(program, args, { ...opts, env: childEnv(env), encoding: "utf8" });
|
|
120
|
+
return { stdout, stderr };
|
|
121
|
+
}
|
|
122
|
+
/** stdout of a process that exited 0; rejects otherwise (ENOENT when it cannot start). No shell. */
|
|
123
|
+
export const capture = async (file, args, env, cwd) => (await execProgram(file, args, { env, cwd, timeout: PROBE_TIMEOUT_MS })).stdout;
|
|
93
124
|
/** Output inherited, stdin as asked; resolves with the exit code (null when killed by a signal); rejects when it cannot start. No shell. */
|
|
94
125
|
export const spawnInherited = async (req) => {
|
|
95
126
|
const program = await onPath(req.file, req.env);
|
|
@@ -98,7 +129,7 @@ export const spawnInherited = async (req) => {
|
|
|
98
129
|
return new Promise((resolve, reject) => {
|
|
99
130
|
const child = spawn(program, req.args, {
|
|
100
131
|
cwd: req.cwd,
|
|
101
|
-
env: req.env,
|
|
132
|
+
env: childEnv(req.env),
|
|
102
133
|
stdio: [req.stdin, "inherit", "inherit"],
|
|
103
134
|
});
|
|
104
135
|
child.on("error", reject);
|
package/dist/core/proc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proc.js","sourceRoot":"","sources":["../../src/core/proc.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"proc.js","sourceRoot":"","sources":["../../src/core/proc.ts"],"names":[],"mappings":"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"}
|