Specs security / security (push) Successful in 7s
Specs verify / verify (push) Successful in 11s
Conventional commits / commits (pull_request) Successful in 10s
Specs security / security (pull_request) Successful in 7s
Specs verify / verify (pull_request) Successful in 9s
40 lines
1.6 KiB
JavaScript
40 lines
1.6 KiB
JavaScript
const assert = require("node:assert/strict");
|
|
const { execFileSync } = require("node:child_process");
|
|
const { readFileSync } = require("node:fs");
|
|
const path = require("node:path");
|
|
|
|
// OpenSpec CLI is installed globally (no npm pin: its transitive braces advisory has no 3.x fix).
|
|
// This check fails fast with an actionable message instead of silently using another version.
|
|
const root = path.resolve(__dirname, "..");
|
|
const expectedCli = readFileSync(path.join(root, "openspec/.cli-version"), "utf8").trim();
|
|
const expectedNode = readFileSync(path.join(root, ".nvmrc"), "utf8").trim();
|
|
const store = "wealth-ledger-specs";
|
|
|
|
const run = (command, args) =>
|
|
execFileSync(command, args, { cwd: root, encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] }).trim();
|
|
|
|
assert.equal(
|
|
process.version.replace(/^v/, ""), expectedNode,
|
|
`Node ${process.version} differs from .nvmrc ${expectedNode}. Run: nvm use --silent`,
|
|
);
|
|
|
|
let cliVersion;
|
|
try {
|
|
cliVersion = run("openspec", ["--version"]);
|
|
} catch {
|
|
assert.fail(`openspec CLI not found. Install it globally: npm install -g @fission-ai/openspec@${expectedCli}`);
|
|
}
|
|
assert.equal(
|
|
cliVersion, expectedCli,
|
|
`openspec ${cliVersion} differs from openspec/.cli-version ${expectedCli}. Reinstall: npm install -g @fission-ai/openspec@${expectedCli}`,
|
|
);
|
|
|
|
// Store presence is checked by the CLI itself: an unknown store must fail, not fall back silently.
|
|
try {
|
|
run("openspec", ["validate", "--specs", "--store", store]);
|
|
} catch (error) {
|
|
assert.fail(`openspec store '${store}' is not usable: ${error.stderr || error.stdout || error.message}`);
|
|
}
|
|
|
|
console.log(`openspec ${cliVersion} on Node ${expectedNode}: toolchain matches`);
|