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

7 lines
2.0 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";
const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), ".."); const sourceRoot = path.join(root, "freecad-source"); const files = ["src/Mod/Fem/CMakeLists.txt", "src/Mod/Fem/App/CMakeLists.txt", "src/Mod/Fem/Init.py", "src/Mod/Fem/ObjectsFem.py", "src/Mod/Fem/App/FemAnalysis.cpp", "src/Mod/Fem/App/FemMesh.cpp"]; const sha256 = (file) => crypto.createHash("sha256").update(fs.readFileSync(path.join(sourceRoot, file))).digest("hex"); const inputs = Object.fromEntries(files.map((file) => [file, sha256(file)])); const report = { schema: "freecad-web-p6-fem-source-boundary/v1", module: "Fem", result: "pass_probe_only", sourceRevision: "4f4e9244e613ea2df06e70027074a562695048cb", currentSourceRevision: execFileSync("git", ["-C", sourceRoot, "rev-parse", "HEAD"], { encoding: "utf8" }).trim(), cmake: { target: "Fem", appTarget: "Fem", guiTarget: "FemGui", buildCondition: "BUILD_FEM_VTK / BUILD_GUI", guiResources: true }, dependencies: ["FreeCADApp", "Part", "Mesh", "Fem"], actions: { "create/recompute": { entry: "src/Mod/Fem/ObjectsFem.py", representative: "makeAnalysis", objectType: "Fem::FemAnalysis" }, "inspect/source-inventory": { entry: "src/Mod/Fem/Init.py" }, "python-api": { entry: "src/Mod/Fem/ObjectsFem.py", apiCount: 1305 }, "save/reopen": { entry: "src/Mod/Fem/App/FemAnalysis.cpp" } }, guiExcluded: ["FreeCADGui", "PySide", "femviewprovider", "FemGui"], conditionalFeatures: ["BUILD_FEM_VTK", "BUILD_FEM_VTK_PYTHON"], inputs }; fs.mkdirSync(path.join(root, "docs/p6"), { recursive: true }); fs.writeFileSync(path.join(root, "docs/p6/fem-source-boundary.json"), `${JSON.stringify(report, null, 2)}\n`); fs.writeFileSync(path.join(root, "docs/freecad-p6-fem-a-rg.log"), `result=${report.result}\nfiles=${files.length}\nmoduleTarget=Fem\nappTarget=Fem\n guiTarget=FemGui\n`); console.log(JSON.stringify({ result: report.result, files: files.length, target: report.cmake.target }));