Guard fiveaxis staging manifests

This commit is contained in:
2026-06-13 14:40:06 +08:00
parent 1d40980fed
commit 0132cb34ee
3 changed files with 239 additions and 165 deletions

View File

@@ -4520,120 +4520,108 @@
return plan;
}
function assertFiveAxisMachineFilesStaging(name, files, wasmDir, expectedWasmDir) {
if (wasmDir !== expectedWasmDir) {
throw new Error(`browser_fiveaxis_${name}_staging_root: path drift`);
}
if (files.length === 0 || new Set(files).size !== files.length) {
throw new Error(`browser_fiveaxis_${name}_staging_manifest: list drift`);
}
for (const file of files) {
if (`${wasmDir}/${file}` !== `${expectedWasmDir}/${file}`) {
throw new Error(`browser_fiveaxis_${name}_${file}_staging_manifest: path drift`);
}
}
}
async function writeFiveAxisMachineFiles(interp, name, sourceDir, wasmDir, expectedWasmDir, files) {
assertFiveAxisMachineFilesStaging(name, files, wasmDir, expectedWasmDir);
for (const file of files) {
await writeFetchedTextFile(interp, `${sourceDir}/${file}`, `${wasmDir}/${file}`);
}
return wasmDir;
}
async function writeFiveAxisTrtMachineFiles(interp) {
const sourceDir =
"../../vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting";
const wasmDir = "/work/browser-fiveaxis/table-rotary-tilting";
const remapFiles = [
"428remap.ngc",
"429remap.ngc",
"430remap.ngc",
"centering.ngc",
"helix_ac.ngc",
"helix_bc.ngc",
"xyzac_switchkins_sub.ngc",
"xyzbc_switchkins_sub.ngc",
const files = [
"xyzac-trt.ini",
"xyzbc-trt.ini",
"xyzac-trt.tbl",
"xyzbc-trt.tbl",
"remap_subs/428remap.ngc",
"remap_subs/429remap.ngc",
"remap_subs/430remap.ngc",
"remap_subs/centering.ngc",
"remap_subs/helix_ac.ngc",
"remap_subs/helix_bc.ngc",
"remap_subs/xyzac_switchkins_sub.ngc",
"remap_subs/xyzbc_switchkins_sub.ngc",
"demos/xyzac_switchkins.ngc",
"demos/xyzbc_switchkins.ngc",
"demos/xyzac_switchkins_test_1.ngc",
"demos/xyzac_switchkins_test_2.ngc",
"demos/xyzac_switchkins_test_3.ngc",
"demos/boat-xyzac.ngc",
"demos/boat-xyzbc.ngc",
"demos/impeller-7bl-xyzac.ngc",
];
await writeFetchedTextFile(interp, `${sourceDir}/xyzac-trt.ini`, `${wasmDir}/xyzac-trt.ini`);
await writeFetchedTextFile(interp, `${sourceDir}/xyzbc-trt.ini`, `${wasmDir}/xyzbc-trt.ini`);
await writeFetchedTextFile(interp, `${sourceDir}/xyzac-trt.tbl`, `${wasmDir}/xyzac-trt.tbl`);
await writeFetchedTextFile(interp, `${sourceDir}/xyzbc-trt.tbl`, `${wasmDir}/xyzbc-trt.tbl`);
for (const filename of remapFiles) {
await writeFetchedTextFile(
interp,
`${sourceDir}/remap_subs/${filename}`,
`${wasmDir}/remap_subs/${filename}`,
);
}
await writeFetchedTextFile(
return writeFiveAxisMachineFiles(
interp,
`${sourceDir}/demos/xyzac_switchkins.ngc`,
`${wasmDir}/demos/xyzac_switchkins.ngc`,
"table-rotary-tilting",
sourceDir,
wasmDir,
"/work/browser-fiveaxis/table-rotary-tilting",
files,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/xyzbc_switchkins.ngc`,
`${wasmDir}/demos/xyzbc_switchkins.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/xyzac_switchkins_test_1.ngc`,
`${wasmDir}/demos/xyzac_switchkins_test_1.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/xyzac_switchkins_test_2.ngc`,
`${wasmDir}/demos/xyzac_switchkins_test_2.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/xyzac_switchkins_test_3.ngc`,
`${wasmDir}/demos/xyzac_switchkins_test_3.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/boat-xyzac.ngc`,
`${wasmDir}/demos/boat-xyzac.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/boat-xyzbc.ngc`,
`${wasmDir}/demos/boat-xyzbc.ngc`,
);
await writeFetchedTextFile(
interp,
`${sourceDir}/demos/impeller-7bl-xyzac.ngc`,
`${wasmDir}/demos/impeller-7bl-xyzac.ngc`,
);
return wasmDir;
}
async function writeFiveAxisTdrMachineFiles(interp) {
const sourceDir =
"../../vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-dual-rotary";
const wasmDir = "/work/browser-fiveaxis/table-dual-rotary";
const remapFiles = ["428remap.ngc", "429remap.ngc"];
const files = [
"xyzab-tdr.ini",
"xyzab-tdr.tbl",
"remap_subs/428remap.ngc",
"remap_subs/429remap.ngc",
"demos/xyzab-tdr-demo.ngc",
];
await writeFetchedTextFile(interp, `${sourceDir}/xyzab-tdr.ini`, `${wasmDir}/xyzab-tdr.ini`);
await writeFetchedTextFile(interp, `${sourceDir}/xyzab-tdr.tbl`, `${wasmDir}/xyzab-tdr.tbl`);
for (const filename of remapFiles) {
await writeFetchedTextFile(
interp,
`${sourceDir}/remap_subs/${filename}`,
`${wasmDir}/remap_subs/${filename}`,
);
}
await writeFetchedTextFile(
return writeFiveAxisMachineFiles(
interp,
`${sourceDir}/demos/xyzab-tdr-demo.ngc`,
`${wasmDir}/demos/xyzab-tdr-demo.ngc`,
"table-dual-rotary",
sourceDir,
wasmDir,
"/work/browser-fiveaxis/table-dual-rotary",
files,
);
return wasmDir;
}
async function writeFiveAxisBridgeMillMachineFiles(interp) {
const sourceDir =
"../../vendor/linuxcnc/configs/sim/axis/vismach/5axis/bridgemill";
const wasmDir = "/work/browser-fiveaxis/bridgemill";
const remapFiles = ["428remap.ngc", "429remap.ngc", "430remap.ngc"];
const files = [
"5axis.ini",
"5axis.tbl",
"remap_subs/428remap.ngc",
"remap_subs/429remap.ngc",
"remap_subs/430remap.ngc",
"5axisgui.ngc",
];
await writeFetchedTextFile(interp, `${sourceDir}/5axis.ini`, `${wasmDir}/5axis.ini`);
await writeFetchedTextFile(interp, `${sourceDir}/5axis.tbl`, `${wasmDir}/5axis.tbl`);
for (const filename of remapFiles) {
await writeFetchedTextFile(
interp,
`${sourceDir}/remap_subs/${filename}`,
`${wasmDir}/remap_subs/${filename}`,
);
}
await writeFetchedTextFile(interp, `${sourceDir}/5axisgui.ngc`, `${wasmDir}/5axisgui.ngc`);
return wasmDir;
return writeFiveAxisMachineFiles(
interp,
"bridgemill",
sourceDir,
wasmDir,
"/work/browser-fiveaxis/bridgemill",
files,
);
}
async function writeRemapRegressionFiles(interp, name, files) {