Files
edgeever/scripts/run-desktop-builder.mjs
T

54 lines
1.6 KiB
JavaScript

import { spawnSync } from "node:child_process";
const publishIndex = process.argv.indexOf("--publish");
const publishMode = publishIndex >= 0 ? process.argv[publishIndex + 1] ?? "never" : "never";
const environment = { ...process.env };
const requestedArch = environment.EDGE_EVER_DESKTOP_ARCH;
const requestedTarget = environment.EDGE_EVER_DESKTOP_TARGET || (
process.platform === "win32" ? "win" : process.platform === "darwin" ? "mac" : "linux"
);
if (requestedArch && !["arm64", "x64"].includes(requestedArch)) {
throw new Error(`EDGE_EVER_DESKTOP_ARCH must be arm64 or x64, received: ${requestedArch}`);
}
if (!["mac", "win", "linux"].includes(requestedTarget)) {
throw new Error(`EDGE_EVER_DESKTOP_TARGET must be mac, win, or linux, received: ${requestedTarget}`);
}
// electron-builder treats an explicitly present empty CSC_LINK/WIN_CSC_LINK
// as a path. Remove empty optional signing variables so unsigned CI builds
// remain valid while non-empty secrets still enable signing and notarization.
for (const key of [
"CSC_LINK",
"CSC_KEY_PASSWORD",
"APPLE_ID",
"APPLE_APP_SPECIFIC_PASSWORD",
"APPLE_TEAM_ID",
"WIN_CSC_LINK",
"WIN_CSC_KEY_PASSWORD",
]) {
if (!environment[key]) delete environment[key];
}
environment.CSC_IDENTITY_AUTO_DISCOVERY ||= "false";
const builderArgs = [
"run",
"--cwd",
"apps/desktop",
"dist",
"--",
"--publish",
publishMode,
];
if (requestedArch) {
builderArgs.push(`--${requestedTarget}`, `--${requestedArch}`);
}
const result = spawnSync(process.execPath, builderArgs, {
env: environment,
stdio: "inherit",
});
if (result.error) throw result.error;
process.exit(result.status ?? 1);