craftar 0.25.0 → 0.26.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.
@@ -11,6 +11,8 @@ import { dockerVersion, dockerFinding, dockerRunner as defaultDockerRunner, frag
11
11
  import { SchemaError, errorText } from "./schema-fault.js";
12
12
  import { LOCK_FILE, declaredWithoutValue, loadForgeFor, plan, readLock, readWorkspaceConfig, status } from "./sync.js";
13
13
  import { outName } from "../emitters/shared.js";
14
+ import { declaredTemplates, DOTNET_MISSING, DOTNET_MISSING_FIX, dotnetVersion as defaultDotnetVersion, feedMessage, notInstalled, profileLabel, unpinnedSources } from "./templates.js";
15
+ import { capture } from "./proc.js";
14
16
  const execFileP = promisify(execFile);
15
17
  async function defaultGitVersion() {
16
18
  try {
@@ -247,6 +249,46 @@ async function workspaceChecks(given, root, merged, configError, gitMissingRemot
247
249
  w("registered", "warn", "synced but not registered", "craftar sync");
248
250
  else
249
251
  w("registered", "ok", "never synced, nothing to register yet");
252
+ // templates, dotnet — only when the profile has the key (spec 32 §4.3, D11)
253
+ const profile = ws.forge.profiles.get(ws.config.profile);
254
+ if (profile) {
255
+ const label = await profileLabel(ws.forge.root, profile.name);
256
+ let declared;
257
+ try {
258
+ declared = declaredTemplates(profile, label);
259
+ }
260
+ catch (e) {
261
+ w("templates", "warn", oneLine(e), "fix the templates block: only craftar templates reads it");
262
+ // No dotnet check when the block is refused
263
+ }
264
+ if (declared && declared.declared) {
265
+ const findings = [];
266
+ for (const e of declared.entries) {
267
+ if (!e.installable)
268
+ findings.push({ id: "templates", scope: "workspace", level: "warn", message: `templates[${e.entry}]: ${notInstalled(e.kind)}`, fix: "upgrade craftar, or remove the entry" });
269
+ }
270
+ const unpinned = await unpinnedSources(declared.entries, root);
271
+ if (unpinned.length > 0)
272
+ findings.push({ id: "templates", scope: "workspace", level: "warn", message: feedMessage(unpinned), fix: "add a NuGet.Config at the workspace root that pins the feed, or ignore this when NuGet is configured above the workspace or for the user" });
273
+ if (findings.length === 0) {
274
+ const n = declared.entries.length;
275
+ w("templates", "ok", `block accepted: ${n} ${n === 1 ? "entry" : "entries"}`);
276
+ }
277
+ else {
278
+ for (const f of findings)
279
+ w(f.id, f.level, f.message, f.fix);
280
+ }
281
+ // dotnet check — only when at least one entry is installable
282
+ if (declared.entries.some((e) => e.installable)) {
283
+ const getDotnetVersion = opts.dotnetVersion ?? (() => defaultDotnetVersion(capture, env, root));
284
+ const version = await getDotnetVersion();
285
+ if (version !== null)
286
+ w("dotnet", "ok", version);
287
+ else
288
+ w("dotnet", "warn", DOTNET_MISSING, DOTNET_MISSING_FIX);
289
+ }
290
+ }
291
+ }
250
292
  }
251
293
  else {
252
294
  // The workspace did not load: only `lock` runs (it needs only the directory, §6 case 1).
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * External-process execution (design D3): capture (stdout of a finished process, execFile)
3
+ * and spawnInherited (inherited output, spawn). A program is resolved by onPath before it is run. No shell.
4
+ */
5
+ import { execFile, spawn } from "node:child_process";
6
+ import { promises as fs, constants } from "node:fs";
7
+ import path from "node:path";
8
+ /** A wedged probe should not hang doctor forever. */
9
+ const PROBE_TIMEOUT_MS = 30_000;
10
+ /** What a program's file may end with on win32 when no shell runs it; a `.cmd` or `.bat` needs one, so it is never a program here. */
11
+ const WIN_EXTENSIONS = [".exe", ".com"];
12
+ const WIN = process.platform === "win32";
13
+ /**
14
+ * The entries of a PATH value a program is looked for in: the absolute ones, in order. On win32 an entry may be
15
+ * wrapped in quotes (quotes are removed only when they wrap the whole entry), and must start with a drive (`X:\`,
16
+ * `X:/`) or be a UNC path (`\\host\…`, `//host/…`) — a rooted entry without a drive depends on the current
17
+ * directory's drive. Empty and relative entries are dropped everywhere.
18
+ */
19
+ export function pathEntries(value, win = WIN) {
20
+ const raw = value.split(win ? ";" : ":");
21
+ const entries = [];
22
+ for (let e of raw) {
23
+ if (win && e.startsWith('"') && e.endsWith('"'))
24
+ e = e.slice(1, -1);
25
+ if (e === "")
26
+ continue;
27
+ if (win) {
28
+ if (/^[A-Za-z]:[\\/]/.test(e) || /^[\\/]{2}[^\\/]/.test(e))
29
+ entries.push(e);
30
+ }
31
+ else {
32
+ if (e.startsWith("/"))
33
+ entries.push(e);
34
+ }
35
+ }
36
+ return entries;
37
+ }
38
+ /** A file; off win32 also executable; any error → false. */
39
+ async function isProgram(file) {
40
+ try {
41
+ const stat = await fs.stat(file);
42
+ if (!stat.isFile())
43
+ return false;
44
+ if (!WIN)
45
+ await fs.access(file, constants.X_OK);
46
+ return true;
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ }
52
+ /**
53
+ * The absolute path of the program `file`, looked for in the ABSOLUTE entries of `env`'s PATH only — or null.
54
+ * The platform's own lookup is not used: it also searches the child's working directory (on Windows always; elsewhere
55
+ * for an empty or relative PATH entry), and craftar runs `dotnet` with the workspace root as working directory
56
+ * (spec 32 §7: a program is found on PATH only). An absolute `file` is returned as given; a relative path is null.
57
+ */
58
+ export async function onPath(file, env) {
59
+ if (path.isAbsolute(file))
60
+ return file;
61
+ if (file === "" || file !== path.basename(file))
62
+ return null;
63
+ const key = WIN ? Object.keys(env).find((k) => k.toUpperCase() === "PATH") : "PATH";
64
+ const entries = pathEntries((key === undefined ? undefined : env[key]) ?? "");
65
+ const names = WIN && !WIN_EXTENSIONS.some((ext) => file.toLowerCase().endsWith(ext)) ? WIN_EXTENSIONS.map((ext) => file + ext) : [file];
66
+ for (const entry of entries) {
67
+ for (const name of names) {
68
+ const candidate = path.join(entry, name);
69
+ if (await isProgram(candidate))
70
+ return candidate;
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ /** Reject with an ENOENT error for a file not on PATH. */
76
+ function notOnPath(file) {
77
+ return Object.assign(new Error(`${file} is not on PATH`), { code: "ENOENT" });
78
+ }
79
+ /** stdout of a process that exited 0; rejects otherwise (ENOENT when it cannot start). No shell. */
80
+ export const capture = async (file, args, env, cwd) => {
81
+ const program = await onPath(file, env);
82
+ if (program === null)
83
+ throw notOnPath(file);
84
+ return new Promise((resolve, reject) => {
85
+ execFile(program, args, { env, cwd, timeout: PROBE_TIMEOUT_MS }, (error, stdout) => {
86
+ if (error)
87
+ reject(error);
88
+ else
89
+ resolve(stdout);
90
+ });
91
+ });
92
+ };
93
+ /** Output inherited, stdin as asked; resolves with the exit code (null when killed by a signal); rejects when it cannot start. No shell. */
94
+ export const spawnInherited = async (req) => {
95
+ const program = await onPath(req.file, req.env);
96
+ if (program === null)
97
+ throw notOnPath(req.file);
98
+ return new Promise((resolve, reject) => {
99
+ const child = spawn(program, req.args, {
100
+ cwd: req.cwd,
101
+ env: req.env,
102
+ stdio: [req.stdin, "inherit", "inherit"],
103
+ });
104
+ child.on("error", reject);
105
+ child.on("close", (code) => resolve({ code }));
106
+ });
107
+ };
108
+ //# sourceMappingURL=proc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proc.js","sourceRoot":"","sources":["../../src/core/proc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,qDAAqD;AACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,sIAAsI;AACtI,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,MAAe,GAAG;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACvB,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4DAA4D;AAC5D,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,GAAsB;IAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxI,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,MAAM,SAAS,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0DAA0D;AAC1D,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,MAAM,OAAO,GAAU,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACjF,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,4IAA4I;AAC5I,MAAM,CAAC,MAAM,cAAc,GAAW,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE;YACrC,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;SACzC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Project templates declared in a profile (spec 32 §5).
3
+ * `declaredTemplates` is the one reader of `profile.templates`.
4
+ * This module returns data and throws; it never prints.
5
+ */
6
+ import { promises as fs } from "node:fs";
7
+ import path from "node:path";
8
+ import { DotnetNewTemplateSchema, TEMPLATE_RULES, TemplatesSchema } from "../schema/index.js";
9
+ import { credentialFault } from "./remote.js";
10
+ import { exists } from "./forge.js";
11
+ import { schemaIssues } from "./schema-fault.js";
12
+ import { capture as defaultCapture } from "./proc.js";
13
+ const CREDENTIAL = "a source must not carry a user or a password: NuGet's own configuration holds credentials";
14
+ /** The missing-SDK finding and its fix: one spelling for `templates install` and doctor's `dotnet` check. */
15
+ export const DOTNET_MISSING = "the .NET SDK is not available: dotnet --version gave no version";
16
+ export const DOTNET_MISSING_FIX = "install the .NET SDK (the version a global.json at the workspace root pins, if there is one) and check PATH";
17
+ const position = (p) => "templates" + p.map((x) => (typeof x === "number" ? `[${x}]` : `.${x}`)).join("");
18
+ /** The phrase for an entry this craftar cannot install (one spelling for the warning and doctor). */
19
+ export const notInstalled = (kind) => `kind "${kind}" is not installed by this craftar`;
20
+ const unknownKind = (kind) => `templates: ${notInstalled(kind)} — skipped`;
21
+ /** The one reader of `profile.templates` (spec 32 §8). Throws the refusal of messages.md §2. */
22
+ export function declaredTemplates(profile, label) {
23
+ if (profile.templates === undefined || profile.templates === null) {
24
+ return { declared: false, entries: [], warnings: [] };
25
+ }
26
+ const parsed = TemplatesSchema.safeParse(profile.templates);
27
+ if (!parsed.success) {
28
+ const issues = schemaIssues(parsed.error);
29
+ const pos = position(parsed.error.issues[0].path);
30
+ const more = issues.length > 1 ? ` (and ${issues.length - 1} more)` : "";
31
+ if (parsed.error.issues[0].path.length === 0) {
32
+ const hint = ` templates:\n - kind: dotnet-new\n packages: [Example.Templates.Api]`;
33
+ throw new Error(`${label}: ${pos} — ${issues[0].text}\n${hint}`);
34
+ }
35
+ throw new Error(`${label}: ${pos} — ${issues[0].text}${more}`);
36
+ }
37
+ const entries = [];
38
+ const warnings = [];
39
+ for (let entry = 0; entry < parsed.data.length; entry++) {
40
+ const raw = parsed.data[entry];
41
+ const kind = String(raw.kind);
42
+ if (kind !== "dotnet-new") {
43
+ entries.push({ entry, kind, installable: false });
44
+ warnings.push(unknownKind(kind));
45
+ continue;
46
+ }
47
+ // The list schema already accepted this entry; this cannot fail
48
+ const r = DotnetNewTemplateSchema.safeParse(raw);
49
+ if (!r.success)
50
+ throw new Error(`${label}: templates[${entry}] — ${TEMPLATE_RULES.entry}`);
51
+ if (r.data.source !== undefined && credentialFault(r.data.source)) {
52
+ throw new Error(`${label}: templates[${entry}].source — ${CREDENTIAL}`);
53
+ }
54
+ const packages = r.data.packages.map((pkg) => {
55
+ const idx = pkg.indexOf("::");
56
+ return idx === -1 ? { id: pkg, version: null } : { id: pkg.slice(0, idx), version: pkg.slice(idx + 2) };
57
+ });
58
+ entries.push({ entry, kind: "dotnet-new", installable: true, packages, source: r.data.source ?? null });
59
+ }
60
+ return { declared: true, entries, warnings };
61
+ }
62
+ /** Flatten entries to rows for `templates list --json`. */
63
+ export function templateRows(entries) {
64
+ return entries.flatMap((e) => e.installable
65
+ ? e.packages.map((pkg) => ({ entry: e.entry, kind: e.kind, package: pkg.id, version: pkg.version, source: e.source, installable: true }))
66
+ : [{ entry: e.entry, kind: e.kind, package: null, version: null, source: null, installable: false }]);
67
+ }
68
+ /** D9: the Forge-relative file when the directory carries the profile's name, else a description. */
69
+ export async function profileLabel(forgeRoot, name) {
70
+ return (await exists(path.join(forgeRoot, "profiles", name, "profile.yaml")))
71
+ ? `profiles/${name}/profile.yaml`
72
+ : `the profile.yaml of profile ${name}`;
73
+ }
74
+ /** Build the argv for `dotnet new install`. */
75
+ export function installArgv(e, opts) {
76
+ const argv = ["new", "install"];
77
+ for (const pkg of e.packages) {
78
+ argv.push(pkg.version !== null ? `${pkg.id}::${pkg.version}` : pkg.id);
79
+ }
80
+ if (e.source !== null) {
81
+ argv.push("--add-source", e.source);
82
+ }
83
+ if (opts?.force)
84
+ argv.push("--force");
85
+ if (opts?.interactive)
86
+ argv.push("--interactive");
87
+ return argv;
88
+ }
89
+ /** "dotnet " + argv.join(" ") */
90
+ export function installLine(argv) {
91
+ return `dotnet ${argv.join(" ")}`;
92
+ }
93
+ /** Declared package IDs that exist at `root` as anything (lstat), in declaration order, once each. */
94
+ export async function rootCollisions(entries, root) {
95
+ const seen = new Set();
96
+ const collisions = [];
97
+ for (const e of entries) {
98
+ if (!e.installable)
99
+ continue;
100
+ for (const pkg of e.packages) {
101
+ if (seen.has(pkg.id))
102
+ continue;
103
+ seen.add(pkg.id);
104
+ try {
105
+ await fs.lstat(path.join(root, pkg.id));
106
+ collisions.push(pkg.id);
107
+ }
108
+ catch {
109
+ // does not exist, no collision
110
+ }
111
+ }
112
+ }
113
+ return collisions;
114
+ }
115
+ /** Positions of the entries that declare a `source`, when `root` holds no file named NuGet.Config (any case); else []. */
116
+ export async function unpinnedSources(entries, root) {
117
+ const withSource = entries.filter((e) => e.installable && e.source !== null);
118
+ if (withSource.length === 0)
119
+ return [];
120
+ let files;
121
+ try {
122
+ files = await fs.readdir(root);
123
+ }
124
+ catch {
125
+ files = [];
126
+ }
127
+ const hasNugetConfig = files.some((f) => f.toLowerCase() === "nuget.config");
128
+ if (hasNugetConfig)
129
+ return [];
130
+ return withSource.map((e) => e.entry);
131
+ }
132
+ /** messages.md §5, without a prefix: the CLI's line and doctor's message are this text. */
133
+ export function feedMessage(positions) {
134
+ const pos = positions.map((p) => `templates[${p}]`).join(", ");
135
+ return `a source is declared (${pos}) and the workspace root has no NuGet.Config — dotnet adds a declared source to the feeds it already uses, it does not replace them (craftar looks at the workspace root only; NuGet also reads parent directories and the user's configuration)`;
136
+ }
137
+ /** What `install` prints after its runs, and its exit code (spec 32 §4.2 step 5). */
138
+ export function installReport(result, dryRun) {
139
+ const store = "into the dotnet template store of this user (remove a package with: dotnet new uninstall <package>)";
140
+ if (dryRun) {
141
+ return {
142
+ err: [],
143
+ out: [...result.lines.map((l) => l.line), `dry run: ${result.lines.length} would run, ${result.skipped.length} skipped — nothing installed`],
144
+ exitCode: 0,
145
+ };
146
+ }
147
+ const err = [];
148
+ for (const f of result.failed) {
149
+ const msg = f.code === null ? "dotnet did not exit" : `dotnet exited ${f.code}`;
150
+ err.push(`templates[${f.entry}] failed — ${msg}`);
151
+ }
152
+ const out = [`templates: ${result.installed.length} installed, ${result.failed.length} failed, ${result.skipped.length} skipped — ${store}`];
153
+ const exitCode = result.failed.length > 0 || result.skipped.length > 0 ? 1 : 0;
154
+ return { err, out, exitCode };
155
+ }
156
+ /** Throws messages.md §4 before any run when an ID collides — `dryRun` included. */
157
+ export async function installTemplates(entries, root, opts, run) {
158
+ const collisions = await rootCollisions(entries, root);
159
+ if (collisions.length > 0) {
160
+ throw new Error(`a file or folder named like a declared package exists at the workspace root (${collisions.join(", ")}) — dotnet would install it instead of the feed's package; nothing installed`);
161
+ }
162
+ const lines = [];
163
+ const installed = [];
164
+ const failed = [];
165
+ const skipped = [];
166
+ for (const e of entries) {
167
+ if (!e.installable) {
168
+ skipped.push(e.entry);
169
+ continue;
170
+ }
171
+ const argv = installArgv(e, { force: opts.force, interactive: opts.interactive });
172
+ const line = installLine(argv);
173
+ lines.push({ entry: e.entry, line });
174
+ if (opts.dryRun)
175
+ continue;
176
+ opts.announce?.(e.entry, line);
177
+ try {
178
+ const result = await run({
179
+ file: "dotnet",
180
+ args: argv,
181
+ cwd: root,
182
+ env: { ...opts.env, DOTNET_NOLOGO: "1" },
183
+ stdin: opts.interactive ? "inherit" : "ignore",
184
+ });
185
+ if (result.code === 0) {
186
+ installed.push(e.entry);
187
+ }
188
+ else {
189
+ failed.push({ entry: e.entry, code: result.code });
190
+ }
191
+ }
192
+ catch {
193
+ // The program could not start — the next entry still runs.
194
+ failed.push({ entry: e.entry, code: null });
195
+ }
196
+ }
197
+ return { lines, installed, failed, skipped };
198
+ }
199
+ /**
200
+ * The SDK's version, or null (D5). Probed in `cwd` (the workspace root) because `dotnet` reads
201
+ * `global.json` from its working directory — the install runs there.
202
+ */
203
+ export async function dotnetVersion(probe = defaultCapture, env = process.env, cwd) {
204
+ try {
205
+ const stdout = await probe("dotnet", ["--version"], { ...env, DOTNET_NOLOGO: "1" }, cwd);
206
+ for (const raw of stdout.split("\n")) {
207
+ const line = raw.trim();
208
+ if (/^\d+\.\d+\.\d+/.test(line))
209
+ return line;
210
+ }
211
+ return null;
212
+ }
213
+ catch {
214
+ return null;
215
+ }
216
+ }
217
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"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"}
@@ -360,6 +360,66 @@ const SectionKey = z.string().regex(new RegExp(`^(${INGREDIENT_TYPES.join("|")})
360
360
  /** Section values by key, then by name. Strings only (spec 11 Ruling 20); `""` empties the section. */
361
361
  export const SectionsSchema = z.record(SectionKey, z.record(z.string().regex(SECTION_NAME, "a section name is slug-like"), z.string())).default({});
362
362
  /* ------------------------------------------------------------------ */
363
+ /* Templates (spec 32) */
364
+ /* ------------------------------------------------------------------ */
365
+ /** Rule texts of spec 32 §5.2 — each refusal names its position and one of these, never a value from the block. */
366
+ export const TEMPLATE_RULES = {
367
+ list: "must be a list of entries, each with a kind",
368
+ entry: "an entry is a mapping with a kind",
369
+ kind: 'a kind is a lowercase name: a-z, 0-9 and "-", starting with a letter',
370
+ packages: "a dotnet-new entry lists at least one package",
371
+ package: 'a package is a NuGet ID, optionally <id>::<version>: no path, no space, no leading "-" or "."',
372
+ source: "a source is an https:// URL",
373
+ unknownKey: "a dotnet-new entry has no such key (it has kind, packages and source)",
374
+ };
375
+ export const TEMPLATE_KIND = /^[a-z][a-z0-9-]*$/;
376
+ /** `<id>` or `<id>::<version>` (spec 32 §5.2): no separator, no space, no leading `-` or `.`. */
377
+ export const TEMPLATE_PACKAGE = /^[A-Za-z0-9_][A-Za-z0-9_.-]*(::[0-9A-Za-z][0-9A-Za-z.+-]*)?$/;
378
+ /**
379
+ * A source is an `https://` URL with a non-empty host of printable ASCII without `/`,
380
+ * then an optional path of printable ASCII. An empty authority hides a credential from
381
+ * `credentialFault`; no control character reaches a terminal.
382
+ */
383
+ export const TEMPLATE_SOURCE = /^https:\/\/[\x21-\x2e\x30-\x7e]+(\/[\x21-\x7e]*)?$/;
384
+ /** A key we can echo: an identifier-like name, nothing else (URLs, newlines) reaches an output. */
385
+ export const TEMPLATE_KEY_NAME = /^[A-Za-z_][A-Za-z0-9_-]*$/;
386
+ export const DotnetNewTemplateSchema = z
387
+ .object({
388
+ kind: z.literal("dotnet-new"),
389
+ packages: z
390
+ .array(z.string({ invalid_type_error: TEMPLATE_RULES.package, required_error: TEMPLATE_RULES.package }).regex(TEMPLATE_PACKAGE, TEMPLATE_RULES.package), { invalid_type_error: TEMPLATE_RULES.packages, required_error: TEMPLATE_RULES.packages })
391
+ .min(1, TEMPLATE_RULES.packages),
392
+ source: z.string({ invalid_type_error: TEMPLATE_RULES.source }).regex(TEMPLATE_SOURCE, TEMPLATE_RULES.source).optional(),
393
+ })
394
+ .strict();
395
+ /** An entry with any kind: validated as a record with a kind, then `dotnet-new` is re-checked with DotnetNewTemplateSchema. */
396
+ export const TemplatesSchema = z.array(noProtoKey(z.record(z.unknown(), { invalid_type_error: TEMPLATE_RULES.entry })).superRefine((entry, ctx) => {
397
+ const kind = entry.kind;
398
+ if (typeof kind !== "string" || !TEMPLATE_KIND.test(kind)) {
399
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["kind"], message: TEMPLATE_RULES.kind });
400
+ return;
401
+ }
402
+ if (kind === "dotnet-new") {
403
+ const r = DotnetNewTemplateSchema.safeParse(entry);
404
+ if (!r.success) {
405
+ for (const issue of r.error.issues) {
406
+ if (issue.code === "unrecognized_keys") {
407
+ // An unknown key is named only when it is a name; otherwise the entry itself is the position.
408
+ for (const key of issue.keys) {
409
+ if (TEMPLATE_KEY_NAME.test(key))
410
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: [key], message: TEMPLATE_RULES.unknownKey });
411
+ else
412
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: [], message: TEMPLATE_RULES.unknownKey });
413
+ }
414
+ }
415
+ else {
416
+ ctx.addIssue({ code: z.ZodIssueCode.custom, path: issue.path, message: issue.message });
417
+ }
418
+ }
419
+ }
420
+ }
421
+ }), { invalid_type_error: TEMPLATE_RULES.list, required_error: TEMPLATE_RULES.list });
422
+ /* ------------------------------------------------------------------ */
363
423
  /* Recipes */
364
424
  /* ------------------------------------------------------------------ */
365
425
  export const RecipeSchema = z.object({
@@ -404,6 +464,8 @@ export const ProfileSchema = z.object({
404
464
  repos: z.array(noProtoKey(z.record(z.unknown()))).default([]),
405
465
  /** Section values for this profile, keyed `<type>/<outName>` then section name (spec 11 §5.1). */
406
466
  sections: SectionsSchema,
467
+ /** Project templates (spec 32 §5.1): kept as written, NOT validated at load — `declaredTemplates` is its one reader. */
468
+ templates: z.unknown().optional(),
407
469
  });
408
470
  /* ------------------------------------------------------------------ */
409
471
  /* Forge */