Codex-generated pull request (#7)

* feat: recreate scoreko electron wrapper on electron 39.5.1

* fix: handle missing bindings in sqlite legacy workspace
This commit is contained in:
Pandipipas
2026-02-10 17:41:12 +01:00
committed by GitHub
parent 8b2c4e7a0c
commit 905bf0dda0
10 changed files with 6321 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import { existsSync } from "node:fs";
import path from "node:path";
import { spawn } from "node:child_process";
const root = process.cwd();
const nodecgDir = path.join(root, "lib", "nodecg");
const sqliteLegacyDir = path.join(nodecgDir, "workspaces", "database-adapter-sqlite-legacy");
const moduleDirs = [nodecgDir, sqliteLegacyDir].filter((dir) => existsSync(path.join(dir, "package.json")));
if (moduleDirs.length === 0) {
console.error("No NodeCG package folders found. Expected lib/nodecg and/or workspaces.");
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: "39.5.1",
npm_config_disturl: "https://electronjs.org/headers",
},
});
child.on("exit", (code) => {
if (code === 0) {
resolve();
} else {
reject(new Error(`${command} ${args.join(" ")} failed with code ${code}`));
}
});
});
}
for (const dir of moduleDirs) {
if (dir === sqliteLegacyDir) {
console.log(`\n[rebuild-native] Ensuring sqlite legacy workspace deps in: ${dir}`);
await run("npm", ["install"], dir);
await run("npm", ["install", "bindings", "--no-save"], dir);
}
console.log(`\n[rebuild-native] Rebuilding better-sqlite3 in: ${dir}`);
await run(
"npm",
["rebuild", "better-sqlite3", "--runtime=electron", "--target=39.5.1", "--dist-url=https://electronjs.org/headers"],
dir,
);
}
console.log("\n[rebuild-native] Done.");