Files
FreeCADWasmDev/tools/run_p6_points_boundary_probe.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

4 lines
2.2 KiB
JavaScript

#!/usr/bin/env node
import crypto from "node:crypto"; import fs from "node:fs"; import path from "node:path"; import {execFileSync} from "node:child_process"; import {fileURLToPath} from "node:url";
const root=path.resolve(path.dirname(fileURLToPath(import.meta.url)),".."); const sourceRoot=path.join(root,"freecad-source"); const docs=path.join(root,"docs/p6"); const files=["src/Mod/Points/CMakeLists.txt","src/Mod/Points/App/CMakeLists.txt","src/Mod/Points/App/AppPoints.cpp","src/Mod/Points/App/PointsFeature.cpp","src/Mod/Points/App/PropertyPointKernel.cpp","src/Mod/Points/Init.py"]; const input=files.map(f=>`${f}\n${fs.readFileSync(path.join(sourceRoot,f),"utf8")}`).join("\n"); const sourceRevision=execFileSync("git",["-C",sourceRoot,"rev-parse","HEAD"],{encoding:"utf8"}).trim(); const report={schema:"freecad-web-points-source-boundary/v1",task_id:"FW-P6-PTS-A",status:"pass",source_revision:sourceRevision,input_sha256:crypto.createHash("sha256").update(input).digest("hex"),module:"Points",cmake:{app:"src/Mod/Points/App/CMakeLists.txt",guiConditional:"src/Mod/Points/CMakeLists.txt:4-6",guiTarget:"src/Mod/Points/Gui/CMakeLists.txt:52",dependencies:["Part","FreeCADApp"]},registration:{entry:"src/Mod/Points/App/AppPoints.cpp",representativeTypes:["Points::Feature","Points::Structured","Points::PointKernel","Points::PropertyPointKernel"]},python:{entry:"src/Mod/Points/App/AppPointsPy.cpp",init:"src/Mod/Points/Init.py"},actions:{createRecompute:"Points::Feature point cloud",inspect:"Points App registration",pythonApi:"AppPointsPy.cpp",saveReopen:"FCStd/document boundary"},gui:{buildFlag:"BUILD_GUI",webBoundary:"PointsGui is excluded from GUI-free WASM"},boundaries:["Source boundary only; runtime, point geometry, Facade and Chrome remain later contracts.","OBJ/PLY import/export commands are GUI-facing and do not imply persistence support."]}; fs.mkdirSync(docs,{recursive:true}); fs.writeFileSync(path.join(docs,"points-source-boundary.json"),`${JSON.stringify(report,null,2)}\n`); fs.writeFileSync(path.join(root,"docs/freecad-p6-points-a-boundary.log"),`${JSON.stringify({status:report.status,sourceRevision,inputSha256:report.input_sha256,gui:report.gui})}\n`); console.log(JSON.stringify({status:report.status,module:report.module,inputSha256:report.input_sha256}));