yosr-seed 0.2.4 → 0.2.5

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +2 -1
  3. package/dist/adopt.js +22 -8
  4. package/dist/adopt.js.map +1 -1
  5. package/dist/create.js +39 -3
  6. package/dist/create.js.map +1 -1
  7. package/dist/doctor.js +42 -2
  8. package/dist/doctor.js.map +1 -1
  9. package/dist/engine/ci/apply.d.ts +4 -0
  10. package/dist/engine/ci/apply.js +8 -1
  11. package/dist/engine/ci/apply.js.map +1 -1
  12. package/dist/engine/ci/content.d.ts +1 -1
  13. package/dist/engine/ci/content.js +20 -0
  14. package/dist/engine/ci/content.js.map +1 -1
  15. package/dist/engine/gate/run.d.ts +28 -2
  16. package/dist/engine/gate/run.js +226 -15
  17. package/dist/engine/gate/run.js.map +1 -1
  18. package/dist/engine/index.d.ts +6 -6
  19. package/dist/engine/index.js +4 -4
  20. package/dist/engine/index.js.map +1 -1
  21. package/dist/engine/render/package-manager.d.ts +21 -0
  22. package/dist/engine/render/package-manager.js +75 -1
  23. package/dist/engine/render/package-manager.js.map +1 -1
  24. package/dist/engine/render/render.d.ts +1 -1
  25. package/dist/engine/render/render.js +44 -8
  26. package/dist/engine/render/render.js.map +1 -1
  27. package/dist/engine/render/types.d.ts +5 -1
  28. package/dist/gate.js +68 -12
  29. package/dist/gate.js.map +1 -1
  30. package/dist/help.js +17 -1
  31. package/dist/help.js.map +1 -1
  32. package/dist/preflight.d.ts +15 -1
  33. package/dist/preflight.js +43 -5
  34. package/dist/preflight.js.map +1 -1
  35. package/dist/schemas/seed.answers.schema.json +3 -1
  36. package/dist/schemas/seed.template.schema.json +12 -2
  37. package/dist/templates.d.ts +1 -1
  38. package/dist/templates.js +24 -0
  39. package/dist/templates.js.map +1 -1
  40. package/package.json +8 -6
@@ -1,6 +1,12 @@
1
1
  import { spawnSync } from "node:child_process";
2
+ /** Binary on PATH for a package-manager id (`maven` → `mvn`). */
3
+ export function packageManagerBinary(name) {
4
+ return name === "maven" ? "mvn" : name;
5
+ }
2
6
  export function packageManagerAvailable(name) {
3
- const result = spawnSync(name, ["--version"], { stdio: "ignore" });
7
+ const result = spawnSync(packageManagerBinary(name), ["--version"], {
8
+ stdio: "ignore",
9
+ });
4
10
  return result.status === 0;
5
11
  }
6
12
  export function packageManagerMessage(name, available) {
@@ -10,6 +16,10 @@ export function packageManagerMessage(name, available) {
10
16
  return "Package manager pnpm was not found. Run `corepack enable` and try again.";
11
17
  if (name === "uv")
12
18
  return "uv was not found. Install it from https://docs.astral.sh/uv/ and try again.";
19
+ if (name === "dotnet")
20
+ return "The .NET SDK was not found. Install it from https://dot.net/download and try again.";
21
+ if (name === "maven")
22
+ return "Maven was not found. Install it from https://maven.apache.org/download.cgi and try again.";
13
23
  return "Package manager npm was not found.";
14
24
  }
15
25
  /** Major.minor of the lowest Python a `>=3.12`-style range accepts. */
@@ -29,4 +39,68 @@ export function findPython(range) {
29
39
  export function pythonMessage(range) {
30
40
  return `Python ${range} was not found by uv. Install one with \`uv python install ${minimumPython(range) ?? "3.12"}\` and try again.`;
31
41
  }
42
+ /** Major (or major.minor) floor from a `>=10` / `>=10.0` style range. */
43
+ export function minimumSdk(range) {
44
+ return /^>=\s*(\d+(?:\.\d+)?)/.exec(range ?? "")?.[1];
45
+ }
46
+ function versionMeetsFloor(version, floor) {
47
+ const parse = (text) => text.split(".").map((part) => Number.parseInt(part, 10) || 0);
48
+ const have = parse(version);
49
+ const need = parse(floor);
50
+ const len = Math.max(have.length, need.length);
51
+ for (let i = 0; i < len; i++) {
52
+ const a = have[i] ?? 0;
53
+ const b = need[i] ?? 0;
54
+ if (a > b)
55
+ return true;
56
+ if (a < b)
57
+ return false;
58
+ }
59
+ return true;
60
+ }
61
+ /**
62
+ * Whether `dotnet --version` reports an SDK satisfying `range` (e.g. `>=10.0`).
63
+ * Same shape as {@link findPython} / {@link findJava} for later stacks.
64
+ */
65
+ export function findDotnet(range) {
66
+ const result = spawnSync("dotnet", ["--version"], { encoding: "utf8" });
67
+ if (result.status !== 0)
68
+ return { found: false };
69
+ const version = (result.stdout ?? "").trim();
70
+ if (version.length === 0)
71
+ return { found: false };
72
+ const floor = minimumSdk(range);
73
+ if (floor === undefined)
74
+ return { found: true, version };
75
+ return versionMeetsFloor(version, floor)
76
+ ? { found: true, version }
77
+ : { found: false, version };
78
+ }
79
+ export function dotnetMessage(range) {
80
+ return `A .NET SDK ${range} was not found. Install one from https://dot.net/download (minimum ${minimumSdk(range) ?? "10.0"}) and try again.`;
81
+ }
82
+ /**
83
+ * Whether `java -version` reports a JDK satisfying `range` (e.g. `>=25`).
84
+ */
85
+ export function findJava(range) {
86
+ const result = spawnSync("java", ["-version"], { encoding: "utf8" });
87
+ // OpenJDK prints version on stderr.
88
+ const text = `${result.stderr ?? ""}${result.stdout ?? ""}`;
89
+ if (result.status !== 0 && text.length === 0)
90
+ return { found: false };
91
+ const match = /version\s+"(\d+)(?:\.(\d+))?/.exec(text) ??
92
+ /version\s+(\d+)(?:\.(\d+))?/.exec(text);
93
+ if (!match)
94
+ return { found: false };
95
+ const version = match[2] !== undefined ? `${match[1]}.${match[2]}` : `${match[1]}`;
96
+ const floor = minimumSdk(range);
97
+ if (floor === undefined)
98
+ return { found: true, version };
99
+ return versionMeetsFloor(version, floor)
100
+ ? { found: true, version }
101
+ : { found: false, version };
102
+ }
103
+ export function javaMessage(range) {
104
+ return `A JDK ${range} was not found. Install one (minimum ${minimumSdk(range) ?? "25"}) and try again.`;
105
+ }
32
106
  //# sourceMappingURL=package-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/render/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB,EAAE,SAAkB;IAChF,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,0EAA0E,CAAC;IACvG,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,6EAA6E,CAAC;IACxG,OAAO,oCAAoC,CAAC;AAC9C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,UAAU,KAAK,8DAA8D,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,mBAAmB,CAAC;AACxI,CAAC"}
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/render/package-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Mismatch, OptionValue, PackageManagerName, Scalar, StyleProfile, TemplateManifest } from "./types.js";
2
2
  export { RenderError } from "./errors.js";
3
- /** API-only templates (FastAPI, Hono) get endpoint wording in the seeded Local issue. */
3
+ /** API-only templates (FastAPI, Hono, ASP.NET Core, Spring Boot) get endpoint wording in the seeded Local issue. */
4
4
  export declare function isApiOnly(manifest: TemplateManifest): boolean;
5
5
  export type RenderInput = {
6
6
  templateDir: string;
@@ -1,6 +1,7 @@
1
1
  import { execFileSync } from "node:child_process";
2
- import { existsSync, mkdirSync, readdirSync, statSync, writeFileSync } from "node:fs";
2
+ import { existsSync, mkdirSync, readdirSync, statSync, writeFileSync, } from "node:fs";
3
3
  import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
4
5
  import { applyCiArtifacts } from "../ci/apply.js";
5
6
  import { applyWorkflowArtifacts } from "../workflow/apply.js";
6
7
  import { satisfiesYosrEngine } from "./engines.js";
@@ -11,18 +12,32 @@ import { formatTree } from "./format.js";
11
12
  import { addPackages } from "./json-merge.js";
12
13
  import { writeSeedFiles } from "./lockfile.js";
13
14
  import { resolveOptions } from "./options.js";
14
- import { findPython, packageManagerAvailable, packageManagerMessage, pythonMessage, } from "./package-manager.js";
15
+ import { dotnetMessage, findDotnet, findJava, findPython, javaMessage, packageManagerAvailable, packageManagerMessage, pythonMessage, } from "./package-manager.js";
15
16
  import { appendNextAgentRules, writeRules } from "./rules.js";
16
17
  import { applyStyleValues, concreteAliasDirs, concreteRoot, layoutDimension, pathMapFor, relocateTree, resolveStyle, } from "./style.js";
17
18
  import { assertResolved, buildTokens, substitute } from "./tokens.js";
18
- import { applyOp, copyDir, createTree, materializeAnchors, normPath } from "./tree-ops.js";
19
+ import { applyOp, copyDir, createTree, materializeAnchors, normPath, } from "./tree-ops.js";
19
20
  import { readJson } from "./util.js";
20
21
  import { validateProfile, validateTemplate } from "./validate.js";
21
22
  export { RenderError } from "./errors.js";
22
23
  const PM = {
23
- pnpm: { run: "pnpm", exec: "pnpm exec", installCi: "pnpm install --frozen-lockfile" },
24
+ pnpm: {
25
+ run: "pnpm",
26
+ exec: "pnpm exec",
27
+ installCi: "pnpm install --frozen-lockfile",
28
+ },
24
29
  npm: { run: "npm run", exec: "npx", installCi: "npm ci" },
25
30
  uv: { run: "uv run", exec: "uv run", installCi: "uv sync --locked" },
31
+ dotnet: {
32
+ run: "dotnet",
33
+ exec: "dotnet",
34
+ installCi: "dotnet restore --locked-mode",
35
+ },
36
+ maven: {
37
+ run: "mvn",
38
+ exec: "mvn",
39
+ installCi: "mvn -B -q dependency:resolve dependency-lock:check",
40
+ },
26
41
  };
27
42
  /**
28
43
  * Logical root for `domain` / `shared` / `server`. Python and Next.js templates
@@ -32,9 +47,12 @@ const PM = {
32
47
  function logicalRoot(roots, name) {
33
48
  return [`@${name}`, `#${name}`].find((root) => root in roots) ?? `@${name}`;
34
49
  }
35
- /** API-only templates (FastAPI, Hono) get endpoint wording in the seeded Local issue. */
50
+ /** API-only templates (FastAPI, Hono, ASP.NET Core, Spring Boot) get endpoint wording in the seeded Local issue. */
36
51
  export function isApiOnly(manifest) {
37
- return manifest.engines.python !== undefined || manifest.stack?.framework === "hono";
52
+ return (manifest.engines.python !== undefined ||
53
+ manifest.engines.dotnet !== undefined ||
54
+ manifest.engines.java !== undefined ||
55
+ manifest.stack?.framework === "hono");
38
56
  }
39
57
  export async function render(input) {
40
58
  const t0 = Date.now();
@@ -55,6 +73,12 @@ export async function render(input) {
55
73
  const python = manifest.engines.python;
56
74
  if (python !== undefined && !findPython(python).found)
57
75
  fail(pythonMessage(python));
76
+ const dotnet = manifest.engines.dotnet;
77
+ if (dotnet !== undefined && !findDotnet(dotnet).found)
78
+ fail(dotnetMessage(dotnet));
79
+ const java = manifest.engines.java;
80
+ if (java !== undefined && !findJava(java).found)
81
+ fail(javaMessage(java));
58
82
  const pm = PM[pmName];
59
83
  const overrides = input.styleOverrides ?? {};
60
84
  const effective = { ...input.profile.style, ...overrides };
@@ -82,7 +106,11 @@ export async function render(input) {
82
106
  for (const feature of ordered) {
83
107
  const replaces = new Set((feature.replaces ?? []).map((file) => normPath(state, file)));
84
108
  copyDir(state, `${feature.dir ?? `features/${feature.id}`}/files`, `feature:${feature.id}`, (file) => replaces.has(file));
85
- for (const kind of ["dependencies", "devDependencies", "scripts"]) {
109
+ for (const kind of [
110
+ "dependencies",
111
+ "devDependencies",
112
+ "scripts",
113
+ ]) {
86
114
  const map = feature[kind];
87
115
  if (map)
88
116
  addPackages(state, kind, map, `feature:${feature.id}`);
@@ -108,6 +136,8 @@ export async function render(input) {
108
136
  });
109
137
  applyCiArtifacts(state, options, {
110
138
  python: manifest.engines.python !== undefined,
139
+ dotnet: manifest.engines.dotnet !== undefined,
140
+ java: manifest.engines.java !== undefined,
111
141
  });
112
142
  writeRules(state, manifest, options, applied, unsupported, pm, styleRules, allStyleRules, defaultRoots, chosenRoots, concrete, input.profile, activeAliases, extra);
113
143
  const tokens = buildTokens(manifest, options, pmName, pm, dirs, engineVersion);
@@ -125,7 +155,13 @@ export async function render(input) {
125
155
  assertResolved(file, entry.content);
126
156
  if (pmName === "pnpm") {
127
157
  const pkg = state.tree.get("package.json") ?? fail("package.json missing");
128
- const version = execFileSync("pnpm", ["--version"], { encoding: "utf8" }).trim();
158
+ // Resolve pnpm from a cwd without a packageManager pin. Upgrade baselines
159
+ // chdir into an empty temp tree; using process.cwd() would flip the Corepack
160
+ // shim and make package.json hashes drift vs create.
161
+ const version = execFileSync("pnpm", ["--version"], {
162
+ encoding: "utf8",
163
+ cwd: path.dirname(fileURLToPath(import.meta.url)),
164
+ }).trim();
129
165
  const json = JSON.parse(pkg.content);
130
166
  pkg.content = `${JSON.stringify({ ...json, packageManager: `pnpm@${version}` }, null, 2)}\n`;
131
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"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"}
@@ -146,6 +146,10 @@ export type TemplateManifest = {
146
146
  yosr: string;
147
147
  node?: string;
148
148
  python?: string;
149
+ /** .NET SDK range (ASP.NET Core templates), e.g. `>=10.0`. */
150
+ dotnet?: string;
151
+ /** JDK range (Spring templates later), e.g. `>=25`. */
152
+ java?: string;
149
153
  };
150
154
  stack?: {
151
155
  framework: string;
@@ -261,7 +265,7 @@ export type ConcreteDirs = {
261
265
  serverDir: string;
262
266
  featureUiDir: string | null;
263
267
  };
264
- export type PackageManagerName = "pnpm" | "npm" | "uv";
268
+ export type PackageManagerName = "pnpm" | "npm" | "uv" | "dotnet" | "maven";
265
269
  export type PackageManagerCommands = {
266
270
  run: string;
267
271
  exec: string;
package/dist/gate.js CHANGED
@@ -1,29 +1,70 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { exitCodes, runGate } from "./engine/index.js";
4
- import { liveProbe, packageManagerCheck, pythonCheck, } from "./preflight.js";
4
+ import { dotnetCheck, javaCheck, liveProbe, packageManagerCheck, pythonCheck, } from "./preflight.js";
5
5
  import { isTemplateId, loadTemplateManifest, templateDir, templatePackageVersion, } from "./templates.js";
6
- const USAGE = "Usage: yosr-seed gate [dir] [--e2e] [--image]";
6
+ const USAGE = "Usage: yosr-seed gate [dir] [--e2e] [--image] [--database-url <url>] [--mongodb-uri <uri>]";
7
7
  function lastLines(text) {
8
8
  const lines = text.split("\n").filter((line) => line.trim().length > 0);
9
9
  return lines.slice(-15).join("\n");
10
10
  }
11
+ function takeFlagValue(name, inline, rest) {
12
+ if (inline !== undefined && inline.length > 0)
13
+ return inline;
14
+ const next = rest.shift();
15
+ if (next === undefined || next.startsWith("--"))
16
+ throw new Error(`Missing value for --${name}.`);
17
+ return next;
18
+ }
11
19
  /** Re-runs the recorded template's checks in a generated project. */
12
20
  export async function runGateCommand(io) {
13
21
  let dir;
14
22
  let e2e = false;
15
23
  let image = false;
16
- for (const arg of io.args.slice(1)) {
17
- if (arg === "--e2e")
18
- e2e = true;
19
- else if (arg === "--image")
20
- image = true;
21
- else if (arg.startsWith("--") || dir !== undefined) {
22
- io.stderr(USAGE);
23
- return exitCodes.failure;
24
- }
25
- else
24
+ let databaseUrl;
25
+ let mongodbUri;
26
+ const rest = [...io.args.slice(1)];
27
+ try {
28
+ while (rest.length > 0) {
29
+ const arg = rest.shift();
30
+ if (arg === undefined)
31
+ break;
32
+ if (arg === "--e2e") {
33
+ e2e = true;
34
+ continue;
35
+ }
36
+ if (arg === "--image") {
37
+ image = true;
38
+ continue;
39
+ }
40
+ if (arg === "--database-url" || arg.startsWith("--database-url=")) {
41
+ const inline = arg.startsWith("--database-url=")
42
+ ? arg.slice("--database-url=".length)
43
+ : undefined;
44
+ databaseUrl = takeFlagValue("database-url", inline, rest);
45
+ continue;
46
+ }
47
+ if (arg === "--mongodb-uri" || arg.startsWith("--mongodb-uri=")) {
48
+ const inline = arg.startsWith("--mongodb-uri=")
49
+ ? arg.slice("--mongodb-uri=".length)
50
+ : undefined;
51
+ mongodbUri = takeFlagValue("mongodb-uri", inline, rest);
52
+ continue;
53
+ }
54
+ if (arg.startsWith("--") || dir !== undefined) {
55
+ io.stderr(USAGE);
56
+ return exitCodes.failure;
57
+ }
26
58
  dir = arg;
59
+ }
60
+ }
61
+ catch (error) {
62
+ io.stderr(error instanceof Error ? error.message : String(error));
63
+ return exitCodes.failure;
64
+ }
65
+ if (databaseUrl !== undefined && mongodbUri !== undefined) {
66
+ io.stderr("Pass only one of --database-url or --mongodb-uri.");
67
+ return exitCodes.failure;
27
68
  }
28
69
  const root = path.resolve(io.cwd ?? process.cwd(), dir ?? ".");
29
70
  const answersPath = path.join(root, ".seed", "answers.json");
@@ -37,6 +78,15 @@ export async function runGateCommand(io) {
37
78
  io.stderr(`.seed/answers.json records template ${name || "(none)"}, which this yosr-seed does not ship.`);
38
79
  return exitCodes.failure;
39
80
  }
81
+ const database = answers.options?.database;
82
+ if (databaseUrl !== undefined && database !== "postgres") {
83
+ io.stderr("--database-url is only for Postgres projects. This project is not using Postgres.");
84
+ return exitCodes.failure;
85
+ }
86
+ if (mongodbUri !== undefined && database !== "mongodb") {
87
+ io.stderr("--mongodb-uri is only for MongoDB projects. This project is not using MongoDB.");
88
+ return exitCodes.failure;
89
+ }
40
90
  const manifest = loadTemplateManifest(name);
41
91
  const shipped = templatePackageVersion(name);
42
92
  io.stdout(`Template: ${name}@${shipped}`);
@@ -48,6 +98,10 @@ export async function runGateCommand(io) {
48
98
  const checks = [packageManagerCheck(manager, probe)];
49
99
  if (manifest.engines.python !== undefined)
50
100
  checks.push(pythonCheck(manifest.engines.python, probe));
101
+ if (manifest.engines.dotnet !== undefined)
102
+ checks.push(dotnetCheck(manifest.engines.dotnet, probe));
103
+ if (manifest.engines.java !== undefined)
104
+ checks.push(javaCheck(manifest.engines.java, probe));
51
105
  const missing = checks.filter((check) => !check.ok);
52
106
  if (missing.length > 0) {
53
107
  for (const check of missing)
@@ -61,6 +115,8 @@ export async function runGateCommand(io) {
61
115
  e2e,
62
116
  image,
63
117
  quiet: true,
118
+ ...(databaseUrl !== undefined ? { databaseUrl } : {}),
119
+ ...(mongodbUri !== undefined ? { mongodbUri } : {}),
64
120
  });
65
121
  for (const step of gate.steps) {
66
122
  const seconds = step.durationSec !== undefined ? ` ${step.durationSec}s` : "";
package/dist/gate.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"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"}
package/dist/help.js CHANGED
@@ -63,12 +63,22 @@ function needsLine(manifest) {
63
63
  const python = manifest.engines.python;
64
64
  if (python !== undefined)
65
65
  return `Needs Python ${python}.`;
66
+ const dotnet = manifest.engines.dotnet;
67
+ if (dotnet !== undefined)
68
+ return `Needs .NET SDK ${dotnet}.`;
69
+ const java = manifest.engines.java;
70
+ if (java !== undefined)
71
+ return `Needs JDK ${java} and Maven.`;
66
72
  return `Needs Node.js ${manifest.engines.node ?? ">=24"}.`;
67
73
  }
68
74
  /** What `style.ignore` leaves out of a template, in words. */
69
75
  function skippedSettings(manifest) {
70
76
  if (manifest.engines.python !== undefined)
71
77
  return "TypeScript, Prettier, React naming";
78
+ if (manifest.engines.dotnet !== undefined)
79
+ return "TypeScript, Prettier, React naming";
80
+ if (manifest.engines.java !== undefined)
81
+ return "TypeScript, Prettier, React naming";
72
82
  return "lint preset, forms, React component naming, data fetching";
73
83
  }
74
84
  /** Flags of a non-default template that differ from the default template's. */
@@ -133,7 +143,7 @@ export function buildHelpText() {
133
143
  " Report template changes since create. Writes nothing; does not apply upgrades.",
134
144
  " yosr-seed adopt [dir] --template <id> [--package-manager <pm>] [--yes]",
135
145
  " Preview, then add AGENTS.md + pointer files and an adopted .seed/ record. Does not rewrite app code.",
136
- " yosr-seed gate [dir] [--e2e] [--image]",
146
+ " yosr-seed gate [dir] [--e2e] [--image] [--database-url <url>] [--mongodb-uri <uri>]",
137
147
  " Run the project's checks again (lint, typecheck, tests, ...) and rewrite .seed/report.md.",
138
148
  " yosr-seed --version",
139
149
  "",
@@ -164,6 +174,12 @@ export function buildHelpText() {
164
174
  " Run the optional end-to-end step.",
165
175
  " --no-gate",
166
176
  " Write the project and skip install, lint, typecheck, build, and test.",
177
+ " --database-url <url>",
178
+ " Create/gate: use this throwaway Postgres URL instead of a Docker container.",
179
+ " Never read from the environment; never written to .seed/.",
180
+ " --mongodb-uri <uri>",
181
+ " Create/gate: use this throwaway MongoDB URI instead of a Docker container.",
182
+ " Never read from the environment; never written to .seed/.",
167
183
  " --no-git",
168
184
  " Do not create a git repository.",
169
185
  " --push",
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,18 @@ export type CommandProbe = {
12
12
  found: boolean;
13
13
  text: string;
14
14
  };
15
+ /** A .NET SDK that satisfies `range` (e.g. `>=10.0`). */
16
+ dotnet?(range: string): {
17
+ found: boolean;
18
+ text: string;
19
+ };
20
+ /** A JDK that satisfies `range` (e.g. `>=25`). */
21
+ java?(range: string): {
22
+ found: boolean;
23
+ text: string;
24
+ };
15
25
  };
16
- export type ManagerName = "pnpm" | "npm" | "uv";
26
+ export type ManagerName = "pnpm" | "npm" | "uv" | "dotnet" | "maven";
17
27
  export type Check = {
18
28
  name: string;
19
29
  ok: boolean;
@@ -25,6 +35,10 @@ export declare function nodeCheck(version: string): Check;
25
35
  export declare function packageManagerCheck(manager: ManagerName, probe: CommandProbe): Check;
26
36
  /** Python for a Python template (`engines.python`, for example `>=3.12`). */
27
37
  export declare function pythonCheck(range: string, probe: CommandProbe): Check;
38
+ /** .NET SDK for an ASP.NET Core template (`engines.dotnet`, for example `>=10.0`). */
39
+ export declare function dotnetCheck(range: string, probe: CommandProbe): Check;
40
+ /** JDK for a Spring Boot template (`engines.java`, for example `>=25`). */
41
+ export declare function javaCheck(range: string, probe: CommandProbe): Check;
28
42
  export declare function gitCheck(enabled: boolean, probe: CommandProbe, identity: {
29
43
  name: string;
30
44
  email: string;
package/dist/preflight.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readdirSync } from "node:fs";
2
2
  import { spawnSync } from "node:child_process";
3
3
  import path from "node:path";
4
- import { findPython, nodeVersionMessage, pythonMessage } from "./engine/index.js";
4
+ import { dotnetMessage, findDotnet, findJava, findPython, javaMessage, nodeVersionMessage, packageManagerBinary, pythonMessage, } from "./engine/index.js";
5
5
  export function liveProbe() {
6
6
  return {
7
7
  version(command) {
@@ -43,6 +43,18 @@ export function liveProbe() {
43
43
  text: `${text.length > 0 ? text : "Python"} (${found.path})`,
44
44
  };
45
45
  },
46
+ dotnet(range) {
47
+ const found = findDotnet(range);
48
+ if (!found.found || found.version === undefined)
49
+ return { found: false, text: "" };
50
+ return { found: true, text: `.NET SDK ${found.version}` };
51
+ },
52
+ java(range) {
53
+ const found = findJava(range);
54
+ if (!found.found || found.version === undefined)
55
+ return { found: false, text: "" };
56
+ return { found: true, text: `JDK ${found.version}` };
57
+ },
46
58
  };
47
59
  }
48
60
  export function nodeCheck(version) {
@@ -52,18 +64,24 @@ export function nodeCheck(version) {
52
64
  return { name: "node", ok: true, line: `Node.js ${version}` };
53
65
  }
54
66
  export function packageManagerCheck(manager, probe) {
55
- const found = probe.version(manager);
67
+ const binary = packageManagerBinary(manager);
68
+ const found = probe.version(binary);
56
69
  if (!found.found) {
57
70
  const line = manager === "pnpm"
58
71
  ? "pnpm not found. Run `corepack enable` or pass --package-manager npm"
59
72
  : manager === "uv"
60
73
  ? "uv not found. Install it from https://docs.astral.sh/uv/ and try again."
61
- : "npm not found. Install Node.js, which includes npm, or pass --package-manager pnpm";
74
+ : manager === "dotnet"
75
+ ? "dotnet not found. Install the .NET SDK from https://dot.net/download and try again."
76
+ : manager === "maven"
77
+ ? "mvn not found. Install Maven and try again."
78
+ : "npm not found. Install Node.js, which includes npm, or pass --package-manager pnpm";
62
79
  return { name: "package-manager", ok: false, line };
63
80
  }
64
- const text = found.text.startsWith(manager)
81
+ const label = manager === "maven" ? "mvn" : manager;
82
+ const text = found.text.startsWith(label)
65
83
  ? found.text
66
- : `${manager} ${found.text}`;
84
+ : `${label} ${found.text}`;
67
85
  return { name: "package-manager", ok: true, line: text };
68
86
  }
69
87
  /** Python for a Python template (`engines.python`, for example `>=3.12`). */
@@ -76,6 +94,26 @@ export function pythonCheck(range, probe) {
76
94
  return { name: "python", ok: false, line: pythonMessage(range) };
77
95
  return { name: "python", ok: true, line: found.text };
78
96
  }
97
+ /** .NET SDK for an ASP.NET Core template (`engines.dotnet`, for example `>=10.0`). */
98
+ export function dotnetCheck(range, probe) {
99
+ const found = probe.dotnet?.(range) ?? {
100
+ found: true,
101
+ text: `.NET SDK ${range}`,
102
+ };
103
+ if (!found.found)
104
+ return { name: "dotnet", ok: false, line: dotnetMessage(range) };
105
+ return { name: "dotnet", ok: true, line: found.text };
106
+ }
107
+ /** JDK for a Spring Boot template (`engines.java`, for example `>=25`). */
108
+ export function javaCheck(range, probe) {
109
+ const found = probe.java?.(range) ?? {
110
+ found: true,
111
+ text: `JDK ${range}`,
112
+ };
113
+ if (!found.found)
114
+ return { name: "java", ok: false, line: javaMessage(range) };
115
+ return { name: "java", ok: true, line: found.text };
116
+ }
79
117
  export function gitCheck(enabled, probe, identity) {
80
118
  if (!enabled)
81
119
  return { name: "git", ok: true, line: "git skipped (--no-git)" };