scripts/update-packaging.mjs could not be shown to write zeros: run against the real cli-v1.0.0 SHA256SUMS from the all-zero placeholders at1bc4dddit fills correct values (reproduced in a clean worktree), and branch head8fc630dalready carried them. The old script was fragile, though: it read lines with split/reverse (a `*file` binary-mode name or a stray column would silently mis-key), never checked that a sum was 64 hex, accepted all-zero sums, did not check that any placeholder had actually matched, and wrote the formula before it knew the manifest would succeed. Now it parses `shasum -a 256` lines strictly, requires every target to be 64 lowercase hex and not all zeros, requires at least one url/sha256 pair and no unfilled sha256 left in the formula, computes both files first and writes only if everything passed, otherwise exits 1 with "nothing was written". Tested in scripts/update-packaging.test.mjs (fixture SHA256SUMS; run by `npm test` via `test:scripts`). Docs (packaging README, release runbook step 7, tap README) say to compare the diff with SHA256SUMS and that tap/bucket CI catches a wrong or zero sum only when its PR is opened and read. Ran against /Volumes/HD-2/Git.Local/QRun-IO/.worktrees/qqq-cli-release/dist/SHA256SUMS; the packaging files are unchanged from8fc630d, and each sum was checked by hand against it: darwin-arm64 5017a32ac5031d9146d541381099a959e5c19bbf04c48f725045d89d6007b211 darwin-x64 eb9b1d43d24b639118d94b175c343080a39ae9ba64c24645c1792ff3b16a37f1 linux-arm64 25f513bdda13bbe40cf536844eebc1e3a7e21cf7804024f25ebe7c42793d7ebc linux-x64 804d06cb7c0012c2f185ae5d94c6bb8f9e2482a440bb3c165361f1a14c941e41 windows-x64 cf418d7842a227cee412171878228004f9bc5098a272c64b89512d1e2d06a176 (linux musl sums are in SHA256SUMS but not used by the formula or manifest.) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
38 lines
1.5 KiB
JSON
38 lines
1.5 KiB
JSON
{
|
|
"name": "qqq-cli-workspace",
|
|
"private": true,
|
|
"description": "Reference CLI, generated TypeScript client, mock server and conformance suite for the QQQ UI API (/qqq/v1).",
|
|
"license": "Apache-2.0",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"workspaces": [
|
|
"packages/ui-api-client",
|
|
"packages/core",
|
|
"packages/conformance",
|
|
"packages/cli"
|
|
],
|
|
"scripts": {
|
|
"spec:merge": "node scripts/merge-spec.mjs --out packages/ui-api-client/openapi/qqq-v1.json",
|
|
"spec:merge-extensions": "node scripts/merge-extensions.mjs",
|
|
"generate": "npm run generate -w @qrun-io/qqq-ui-api-client && node scripts/gen-operations.mjs",
|
|
"build": "npm run build -w @qrun-io/qqq-ui-api-client && npm run build -w @qrun-io/qqq-core && npm run build -w @qrun-io/qqq-ui-api-conformance && npm run build -w @qrun-io/qqq-cli",
|
|
"test": "npm test --workspaces --if-present && npm run test:scripts",
|
|
"test:scripts": "node --test scripts/update-packaging.test.mjs",
|
|
"mock": "prism mock --dynamic --port 4010 packages/ui-api-client/openapi/qqq-v1.json",
|
|
"prepublishOnly": "npm run build",
|
|
"lint": "node scripts/lint.mjs",
|
|
"binaries": "node scripts/build-binaries.mjs",
|
|
"release": "node scripts/release.mjs",
|
|
"test:tui": "cd packages/tui && bun install --frozen-lockfile && bun test",
|
|
"typecheck:tui": "cd packages/tui && bun install --frozen-lockfile && npx tsc -p tsconfig.json"
|
|
},
|
|
"devDependencies": {
|
|
"@stoplight/prism-cli": "5.16.0",
|
|
"@types/node": "22.15.3",
|
|
"typescript": "5.8.3",
|
|
"yaml": "2.9.1"
|
|
}
|
|
}
|