Scaffold explicit query placement and authored GraphQL documents
This commit is contained in:
@@ -12,6 +12,7 @@ import os from "node:os";
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { planStructure, applyStructure, resumeStructure, type StructuralRequest } from "./structural-plan.js";
|
||||
import { scaffoldRecipe, type ScaffoldRecipe } from "./scaffold-recipes.js";
|
||||
import { isExecutionScaffold } from "./execution-scaffold.js";
|
||||
import { checkBundleSources } from "../bindings/bundle-policy.js";
|
||||
import { sealMigrations } from "./migration-seal.js";
|
||||
import { generatePackageDescriptor } from "../bindings/index.js";
|
||||
@@ -201,7 +202,7 @@ const main = async () => {
|
||||
}
|
||||
if (!command || command === "--help" || args.includes("--help")) {
|
||||
process.stdout.write(
|
||||
"quixos-qx: author-check, author-contract, converge, worklist, inspect, resources, check-committed, source-baseline, scaffold-package, scaffold-interface, scaffold-function, scaffold-dependency, scaffold-structure, scaffold-resume, pin-upgrade, parse, lint, format\n" +
|
||||
"quixos-qx: author-check, author-contract, converge, worklist, inspect, resources, check-committed, source-baseline, scaffold-package, scaffold-interface, scaffold-function, scaffold-query, scaffold-dependency, scaffold-structure, scaffold-resume, pin-upgrade, parse, lint, format\n" +
|
||||
"inspect WORKBENCH [RESOURCE] shows provisional contracts, with explicit historical fallback; never verification evidence.\n" +
|
||||
"resources WORKBENCH lists registered editable repositories. Use qx-workspace for the workspace authoring workflow.\n",
|
||||
);
|
||||
@@ -387,7 +388,11 @@ const main = async () => {
|
||||
throw new Error(
|
||||
"Refresh is no longer required: edit declarations and typed implementation wiring, then run qx-workspace check. Dependency installation uses scaffold install.",
|
||||
);
|
||||
if (["scaffold-package", "scaffold-function", "scaffold-migration", "scaffold-install"].includes(command)) {
|
||||
if (
|
||||
["scaffold-package", "scaffold-function", "scaffold-query", "scaffold-migration", "scaffold-install"].includes(
|
||||
command,
|
||||
)
|
||||
) {
|
||||
const [root, specFile, ...flags] = args;
|
||||
let spec: ScaffoldRecipe;
|
||||
if (command === "scaffold-function" && /^[A-Za-z_][A-Za-z0-9_]*$/.test(specFile ?? "")) {
|
||||
@@ -421,16 +426,24 @@ const main = async () => {
|
||||
(flags.includes("--install") && !flags.includes("--write"))
|
||||
)
|
||||
throw new Error(
|
||||
"usage: quixos-qx scaffold-package|function|migration|refresh ROOT SPEC_JSON [--write [--install]]",
|
||||
"usage: quixos-qx scaffold-package|function|query|migration ROOT SPEC_JSON [--write [--install]]",
|
||||
);
|
||||
const plan =
|
||||
command === "scaffold-install"
|
||||
? undefined
|
||||
: await planStructure(
|
||||
root,
|
||||
await scaffoldRecipe(root, command.slice(9) as "package" | "function" | "migration", spec),
|
||||
await scaffoldRecipe(root, command.slice(9) as "package" | "function" | "query" | "migration", spec),
|
||||
process.env.QUIXOS_SNAPSHOT_MAP,
|
||||
);
|
||||
if (
|
||||
flags.includes("--install") &&
|
||||
(spec.template === "typescript-execution" ||
|
||||
(await isExecutionScaffold(root, spec.directory ? `${spec.directory}/` : "")))
|
||||
)
|
||||
throw new Error(
|
||||
"Execution package dependencies are supplied by checkedArtifacts; omit --install and run workspace-root check after authoring.",
|
||||
);
|
||||
const applied = plan && flags.includes("--write") ? await applyStructure(plan) : undefined;
|
||||
if (flags.includes("--install")) {
|
||||
const cwd = path.resolve(root, spec.directory ?? "");
|
||||
|
||||
Reference in New Issue
Block a user