import { build, Platform, Arch } from 'electron-builder' import { rm } from 'node:fs/promises' import { createBuildConfig } from '../build/config.mjs' import { writeReleaseManifest } from './releaseArtifacts.mjs' const args = process.argv.slice(2) if (args.some((arg) => !['--release', '--dir'].includes(arg))) { throw new Error('Usage: node scripts/package.mjs [--release] [--dir]') } const release = args.includes('--release') if (release && args.includes('--dir')) throw new Error('Release builds must produce an installer.') // Never let a failed rebuild leave an older directory looking publishable. if (release) { await rm('dist/release/release-ready.json', { force: true }) } else { process.env.CSC_IDENTITY_AUTO_DISCOVERY = 'false' } const config = createBuildConfig({ release }) await build({ config, targets: Platform.WINDOWS.createTarget(args.includes('--dir') ? ['dir'] : ['nsis'], Arch.x64), publish: 'never' }) if (release) { await writeReleaseManifest(config.directories.output, config.publish[0].url) }