15 lines
2.8 KiB
JavaScript
15 lines
2.8 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 docs = path.join(root, "docs");
|
|
const sourceRevision = "4f4e9244e613ea2df06e70027074a562695048cb";
|
|
const files = ["src/Mod/Import/CMakeLists.txt", "src/Mod/Import/App/CMakeLists.txt", "src/Mod/Import/Init.py", "src/Mod/Import/InitGui.py", "src/Mod/Import/App/AppImport.cpp", "src/Mod/Import/App/ReaderStep.cpp", "src/Mod/Import/App/WriterStep.cpp"];
|
|
const sha = (file) => crypto.createHash("sha256").update(fs.readFileSync(path.join(sourceRoot, file))).digest("hex");
|
|
const line = (file, text) => { const lines = fs.readFileSync(path.join(sourceRoot, file), "utf8").split(/\r?\n/); const index = lines.findIndex((value) => value.includes(text)); if (index < 0) throw new Error(`${text} not found in ${file}`); return { file, line: index + 1, text }; };
|
|
const report = { schema: "freecad-web-p6-import-source-boundary/v1", module: "Import", result: "pass_probe_only", sourceRevision, currentSourceRevision: execFileSync("git", ["-C", sourceRoot, "rev-parse", "HEAD"], { encoding: "utf8" }).trim(), cmake: { target: "Import", appTarget: "Import", scriptTarget: "ImportScripts", guiCondition: "BUILD_GUI", lines: [line("src/Mod/Import/App/CMakeLists.txt", "add_library(Import SHARED"), line("src/Mod/Import/CMakeLists.txt", "if(BUILD_GUI)"), line("src/Mod/Import/CMakeLists.txt", "add_custom_target(ImportScripts ALL")] }, dependencies: ["FreeCADApp", "Part", "OpenCASCADE", "Coin3D/GUI only"], actions: { "import/export": { entries: ["src/Mod/Import/App/ReaderStep.cpp", "src/Mod/Import/App/WriterStep.cpp"], formats: [".step", ".stp", ".igs", ".iges", ".ifc", ".obj"] }, "inspect/source-inventory": { entry: "src/Mod/Import/Init.py", lines: [line("src/Mod/Import/Init.py", "addImportType")] }, "python-api": { entry: "src/Mod/Import/App/AppImportPy.cpp", apiCount: 1135 }, "save/reopen": { entry: "src/Mod/Import/App/ImportOCAF2.cpp", operation: "document object round-trip" } }, objectTypes: ["App::DocumentObjectGroup", "App::FeaturePython"], guiExcluded: ["InitGui.py", "ImportGui", "FreeCADGui", "PySide", "pivy.coin"], inputs: Object.fromEntries(files.map((file) => [file, sha(file)])) };
|
|
fs.mkdirSync(path.join(docs, "p6"), { recursive: true }); fs.writeFileSync(path.join(docs, "p6/import-source-boundary.json"), `${JSON.stringify(report, null, 2)}\n`); fs.writeFileSync(path.join(docs, "freecad-p6-import-a-rg.log"), `result=${report.result}\nfiles=${files.length}\nappTarget=Import\nscriptTarget=ImportScripts\ncurrentSourceRevision=${report.currentSourceRevision}\n`); console.log(JSON.stringify({ result: report.result, files: files.length, appTarget: report.cmake.appTarget }));
|