Files
FreeCADWasmDev/tools/run_p6_draft_action_summary.mjs
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

6 lines
1.5 KiB
JavaScript

#!/usr/bin/env node
import crypto from "node:crypto";
import fs from "node:fs";
import path from "node:path";
const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), ".."); const docs = path.join(root, "docs"); const id = process.argv[2] ?? "02"; const action = id === "02" ? "inspect/source-inventory" : id === "03" ? "python-api" : "save/reopen"; const suffix = id === "02" ? "inspect-source-inventory" : id === "03" ? "python-api" : "save-reopen"; const stages = { C: `p6/draft-action-${id}-kernel.json`, D: `p6/draft-action-${id}-recovery.json`, E: `p6/draft-action-${id}-facade.json`, F: `p6/draft-action-${id}-chrome.json`, G: `p6/draft-action-${id}-persistence.json` }; const contracts = Object.fromEntries(Object.entries(stages).map(([step, file]) => { const text = fs.readFileSync(path.join(docs, file)); return [step, { result: JSON.parse(text).result, artifact: `docs/${file}`, sha256: crypto.createHash("sha256").update(text).digest("hex") }]; })); const report = { schema: `freecad-web-p6-draft-action-${id}-summary/v1`, result: Object.values(contracts).every((item) => item.result === "pass") ? "pass" : "fail", action, sourceRevision: JSON.parse(fs.readFileSync(path.join(docs, "p6/draft-source-boundary.json"), "utf8")).sourceRevision, contracts, moduleStatus: "pending_until_action_gate" }; fs.writeFileSync(path.join(docs, `p6/draft-action-${id}-${suffix}.json`), `${JSON.stringify(report, null, 2)}\n`); console.log(JSON.stringify({ result: report.result, action, contracts: 5 }));