mirror of
https://github.com/Pandipipas/scoreko-electron-dev.git
synced 2026-06-05 21:22:07 +00:00
865c3589bd
- Updated paths and configurations in doctor.mjs and prepare-nodecg-runtime.mjs to use new build-config.mjs imports. - Enhanced runtime installation checks and permissions validation. - Introduced new update configuration management in update-config.ts, including loading and validating update settings. - Implemented update service for managing update checks and downloads in update-service.ts. - Replaced update-utils.ts with update-schema.ts for better structure and clarity in update handling. - Added comprehensive tests for update download and settings management. - Ensured secure handling of download URLs and improved error handling in update processes.
57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
import { existsSync, readFileSync } from "node:fs";
|
|
import path from "node:path";
|
|
import { spawn } from "node:child_process";
|
|
|
|
import { electronCache, electronRoot, getNpmCommand, nodecgRuntimeRoot, runtimeNpmCache } from "./build-config.mjs";
|
|
|
|
const packageJson = JSON.parse(readFileSync(path.join(electronRoot, "package.json"), "utf8"));
|
|
const electronVersion = packageJson.devDependencies?.electron ?? packageJson.dependencies?.electron;
|
|
|
|
if (!electronVersion) {
|
|
console.error("Could not determine Electron version from package.json.");
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!existsSync(path.join(nodecgRuntimeRoot, "package.json"))) {
|
|
console.error("No packaged NodeCG runtime found. Run npm run prepare:runtime first.");
|
|
process.exit(1);
|
|
}
|
|
|
|
/** @returns {Promise<void>} */
|
|
function run(command, args, cwd) {
|
|
return new Promise((resolve, reject) => {
|
|
const child = spawn(command, args, {
|
|
cwd,
|
|
stdio: "inherit",
|
|
shell: process.platform === "win32",
|
|
env: {
|
|
...process.env,
|
|
npm_config_runtime: "electron",
|
|
npm_config_target: electronVersion,
|
|
npm_config_disturl: "https://electronjs.org/headers",
|
|
npm_config_cache: runtimeNpmCache,
|
|
ELECTRON_CACHE: electronCache,
|
|
},
|
|
});
|
|
|
|
child.on("exit", (code) => {
|
|
if (code === 0) {
|
|
resolve();
|
|
} else {
|
|
reject(new Error(`${command} ${args.join(" ")} failed with code ${code}`));
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
console.log(`\n[rebuild-native] Rebuilding better-sqlite3 for Electron ${electronVersion} in: ${nodecgRuntimeRoot}`);
|
|
await run(getNpmCommand(), [
|
|
"rebuild",
|
|
"better-sqlite3",
|
|
"--runtime=electron",
|
|
`--target=${electronVersion}`,
|
|
"--dist-url=https://electronjs.org/headers",
|
|
], nodecgRuntimeRoot);
|
|
|
|
console.log("\n[rebuild-native] Done.");
|