#!/usr/bin/env node import { spawn } from 'node:child_process'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.resolve(__dirname, '..'); const ELECTRON_BUILDER_BIN = process.platform === 'win32' ? path.join(ROOT, 'node_modules', '.bin', 'electron-builder.cmd') : path.join(ROOT, 'node_modules', '.bin', 'electron-builder'); const args = process.argv.slice(2); function shellQuote(value) { return `'${String(value).replace(/'/g, `'\\''`)}'`; } function spawnElectronBuilder() { if (process.platform === 'darwin') { const command = [ 'ulimit -n 65536 >/dev/null 2>&1 || ulimit -n 32768 >/dev/null 2>&1 || ulimit -n 16384 >/dev/null 2>&1 || true', `exec ${shellQuote(ELECTRON_BUILDER_BIN)}${args.length > 0 ? ` ${args.map(shellQuote).join(' ')}` : ''}`, ].join('; '); return spawn('/bin/bash', ['-lc', command], { cwd: ROOT, stdio: 'inherit', env: process.env, }); } return spawn(ELECTRON_BUILDER_BIN, args, { cwd: ROOT, stdio: 'inherit', env: process.env, shell: process.platform === 'win32', }); } const child = spawnElectronBuilder(); child.on('exit', (code, signal) => { if (signal) { process.kill(process.pid, signal); return; } process.exit(code ?? 1); }); child.on('error', (error) => { console.error(error); process.exit(1); });