接入 LinuxCNC TP 运行反馈
This commit is contained in:
@@ -1,14 +1,20 @@
|
||||
import { cp, mkdir, rm, readFile } from "node:fs/promises";
|
||||
import { cp, mkdir, readdir, rm, readFile } from "node:fs/promises";
|
||||
import { dirname, join } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const appRoot = dirname(dirname(fileURLToPath(import.meta.url)));
|
||||
const repoRoot = dirname(dirname(appRoot));
|
||||
const distDir = join(appRoot, "dist");
|
||||
|
||||
await rm(distDir, { recursive: true, force: true });
|
||||
await mkdir(distDir, { recursive: true });
|
||||
await cp(join(appRoot, "index.html"), join(distDir, "index.html"));
|
||||
await cp(join(appRoot, "src"), join(distDir, "src"), { recursive: true });
|
||||
await copyLinuxCncManifest();
|
||||
await copyLinuxCncConfigAssets();
|
||||
await copyKinematicsRuntimeAssets();
|
||||
await copyInterpreterRuntimeAssets();
|
||||
await copyTpRuntimeAssets();
|
||||
|
||||
const packageJson = JSON.parse(await readFile(join(appRoot, "package.json"), "utf8"));
|
||||
const forbiddenDependencies = ["react", "vue", "@angular/core", "svelte"];
|
||||
@@ -22,4 +28,59 @@ if (forbidden.length > 0) {
|
||||
throw new Error(`forbidden frontend framework dependency detected: ${forbidden.join(", ")}`);
|
||||
}
|
||||
|
||||
async function copyInterpreterRuntimeAssets() {
|
||||
const coreSrcDir = join(repoRoot, "wasm-port/build/wasm/core");
|
||||
const coreDistDir = join(distDir, "wasm-port/build/wasm/core");
|
||||
await mkdir(coreDistDir, { recursive: true });
|
||||
for (const entry of ["linuxcnc_interp.js", "linuxcnc_interp.wasm"]) {
|
||||
await cp(join(coreSrcDir, entry), join(coreDistDir, entry));
|
||||
}
|
||||
}
|
||||
|
||||
async function copyTpRuntimeAssets() {
|
||||
const tpSrcDir = join(repoRoot, "wasm-port/build/wasm/tp");
|
||||
const tpDistDir = join(distDir, "wasm-port/build/wasm/tp");
|
||||
await mkdir(tpDistDir, { recursive: true });
|
||||
for (const entry of ["linuxcnc_tp.js", "linuxcnc_tp.wasm"]) {
|
||||
await cp(join(tpSrcDir, entry), join(tpDistDir, entry));
|
||||
}
|
||||
}
|
||||
|
||||
console.log("gmoccapy_static_build=ok");
|
||||
|
||||
async function copyLinuxCncConfigAssets() {
|
||||
const configSrcDir = join(repoRoot, "wasm-port/vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting");
|
||||
const configDistDir = join(distDir, "configs/sim/axis/vismach/5axis/table-rotary-tilting");
|
||||
await mkdir(configDistDir, { recursive: true });
|
||||
await cp(configSrcDir, configDistDir, { recursive: true });
|
||||
}
|
||||
|
||||
async function copyLinuxCncManifest() {
|
||||
const manifestDistDir = join(distDir, "wasm-port/tools");
|
||||
await mkdir(manifestDistDir, { recursive: true });
|
||||
await cp(
|
||||
join(repoRoot, "wasm-port/tools/source-manifest.txt"),
|
||||
join(manifestDistDir, "source-manifest.txt"),
|
||||
);
|
||||
}
|
||||
|
||||
async function copyKinematicsRuntimeAssets() {
|
||||
const sdkSrcDir = join(repoRoot, "wasm-port/runtime/sdk/src");
|
||||
const sdkDistDir = join(distDir, "wasm-port/runtime/sdk/src");
|
||||
await mkdir(sdkDistDir, { recursive: true });
|
||||
await cp(
|
||||
join(sdkSrcDir, "linuxcnc-kinematics.js"),
|
||||
join(sdkDistDir, "linuxcnc-kinematics.js"),
|
||||
);
|
||||
for (const entry of ["linuxcnc-interp.js", "linuxcnc-hal.js", "linuxcnc-tp.js"]) {
|
||||
await cp(join(sdkSrcDir, entry), join(sdkDistDir, entry));
|
||||
}
|
||||
|
||||
const kinematicsSrcDir = join(repoRoot, "wasm-port/build/wasm/kinematics");
|
||||
const kinematicsDistDir = join(distDir, "wasm-port/build/wasm/kinematics");
|
||||
await mkdir(kinematicsDistDir, { recursive: true });
|
||||
for (const entry of await readdir(kinematicsSrcDir)) {
|
||||
if (!/^linuxcnc_.*_kinematics\.(js|wasm)$/.test(entry)) continue;
|
||||
await cp(join(kinematicsSrcDir, entry), join(kinematicsDistDir, entry));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user