- All gsdDir/gsdRoot/gsdHome → sfDir/sfRootDir/sfHome - GSDWorkspace* → SFWorkspace* interfaces - bootstrapGsdProject → bootstrapProject - runGSDDoctor → runSFDoctor - GsdClient → SfClient, gsd-client.ts → sf-client.ts - .gsd/ → .sf/ in all tests, docs, docker, native, vscode - Auto-migration: headless detects .gsd/ → renames to .sf/ - Deleted gsd-phase-state.ts backward-compat re-export - Renamed bin/gsd-from-source → bin/sf-from-source - Updated mintlify docs, github workflows, docker configs
23 lines
549 B
TypeScript
23 lines
549 B
TypeScript
import { execFileSync } from "child_process";
|
|
|
|
const binary = process.env.SF_SMOKE_BINARY || "npx";
|
|
const args = process.env.SF_SMOKE_BINARY
|
|
? ["--help"]
|
|
: ["sf-run", "--help"];
|
|
|
|
const output = execFileSync(binary, args, {
|
|
encoding: "utf8",
|
|
timeout: 30_000,
|
|
});
|
|
|
|
const lower = output.toLowerCase();
|
|
|
|
if (!lower.includes("sf")) {
|
|
console.error(`Help output does not contain "sf": "${output}"`);
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!lower.includes("usage")) {
|
|
console.error(`Help output does not contain "usage": "${output}"`);
|
|
process.exit(1);
|
|
}
|