From 02ddb37bb1370bcde9ab732feeafdfbea9f5fb56 Mon Sep 17 00:00:00 2001 From: Ivan Date: Wed, 22 Apr 2026 16:22:31 -0500 Subject: [PATCH] feat(electron): add script to manage temporary directory for Electron Forge builds --- scripts/electron-forge-local-tmp.js | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 scripts/electron-forge-local-tmp.js diff --git a/scripts/electron-forge-local-tmp.js b/scripts/electron-forge-local-tmp.js new file mode 100644 index 0000000..c375c27 --- /dev/null +++ b/scripts/electron-forge-local-tmp.js @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +// Staging must live outside the repo: packager copies the project into TMPDIR, which cannot be under the source tree. + +const { spawnSync } = require("child_process"); +const fs = require("fs"); +const path = require("path"); + +const root = path.join(__dirname, ".."); +const defaultTmpDir = path.join(path.dirname(root), `.forge-tmp-${path.basename(root)}`); +const tmpDir = path.resolve(process.env.FORGE_TMPDIR || defaultTmpDir); +fs.mkdirSync(tmpDir, { recursive: true }); + +const env = { + ...process.env, + TMPDIR: tmpDir, + TEMP: tmpDir, + TMP: tmpDir, +}; + +const forgeCli = require.resolve("@electron-forge/cli/dist/electron-forge.js"); +const args = process.argv.slice(2); +const result = spawnSync(process.execPath, [forgeCli, ...args], { + cwd: root, + env, + stdio: "inherit", +}); + +if (result.signal) { + process.exit(1); +} +process.exit(result.status ?? 1);