@electron-forge/cli
Version:
A complete tool for building modern Electron applications
58 lines • 5.72 kB
JavaScript
import url from 'node:url';
import { styleText } from 'node:util';
import { initializeProxy } from '@electron/get';
import { api } from '@electron-forge/core';
import { resolveWorkingDir } from '@electron-forge/core-utils';
import { Option, program } from 'commander';
import './util/terminate.js';
import packageJSON from '../package.json' with { type: 'json' };
export async function getMakeOptions() {
let workingDir;
program
.version(packageJSON.version, '-V, --version', 'Output the current version.')
.helpOption('-h, --help', 'Output usage information.')
.argument('[dir]', 'Directory to run the command in. (default: current directory)')
.option('--from-package', `Make distributables from the output of a previous ${styleText('green', 'package')} run, instead of packaging the Electron application again.`)
// `--skip-package` is deprecated. It is hidden from the help output and
// prints a deprecation warning when used.
.addOption(new Option('--skip-package', 'Deprecated: use --from-package instead.').hideHelp())
.option('-a, --arch [arch]', 'Target build architecture.', process.arch)
.option('-p, --platform [platform]', 'Target build platform.', process.platform)
.option('--targets [targets]', `Override your ${styleText('green', 'make')} targets for this run.`)
.allowUnknownOption(true)
.action((dir) => {
workingDir = resolveWorkingDir(dir, false);
})
.parse(process.argv);
const options = program.opts();
if (options.skipPackage) {
console.error(styleText('yellow', '⚠'), '`--skip-package` is deprecated and will be removed in a future major version; use `--from-package` instead.');
}
const makeOpts = {
dir: workingDir,
interactive: true,
fromPackage: Boolean(options.fromPackage || options.skipPackage),
};
if (options.targets)
makeOpts.overrideTargets = options.targets.split(',');
if (options.arch)
makeOpts.arch = options.arch;
if (options.platform)
makeOpts.platform = options.platform;
return makeOpts;
}
// NOTE: this is a hack that exists because Node.js didn't add import.meta.main
// support until 22.18.0. We should bump up the engines and get that fix before
// we go to stable.
// ref https://2ality.com/2022/07/nodejs-esm-main.html
if (import.meta.url.startsWith('file:')) {
const modulePath = url.fileURLToPath(import.meta.url);
if (process.argv[1] === modulePath) {
(async () => {
const makeOpts = await getMakeOptions();
initializeProxy();
await api.make(makeOpts);
})();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlY3Ryb24tZm9yZ2UtbWFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbGVjdHJvbi1mb3JnZS1tYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVDLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFFaEUsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjO0lBQ2xDLElBQUksVUFBa0IsQ0FBQztJQUN2QixPQUFPO1NBQ0osT0FBTyxDQUNOLFdBQVcsQ0FBQyxPQUFPLEVBQ25CLGVBQWUsRUFDZiw2QkFBNkIsQ0FDOUI7U0FDQSxVQUFVLENBQUMsWUFBWSxFQUFFLDJCQUEyQixDQUFDO1NBQ3JELFFBQVEsQ0FDUCxPQUFPLEVBQ1AsK0RBQStELENBQ2hFO1NBQ0EsTUFBTSxDQUNMLGdCQUFnQixFQUNoQixxREFBcUQsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsNERBQTRELENBQy9JO1FBQ0Qsd0VBQXdFO1FBQ3hFLDBDQUEwQztTQUN6QyxTQUFTLENBQ1IsSUFBSSxNQUFNLENBQ1IsZ0JBQWdCLEVBQ2hCLHlDQUF5QyxDQUMxQyxDQUFDLFFBQVEsRUFBRSxDQUNiO1NBQ0EsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDRCQUE0QixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDdkUsTUFBTSxDQUNMLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsT0FBTyxDQUFDLFFBQVEsQ0FDakI7U0FDQSxNQUFNLENBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDcEU7U0FDQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7U0FDeEIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDZCxVQUFVLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQztTQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRS9CLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFDeEIsNkdBQTZHLENBQzlHLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQWdCO1FBQzVCLEdBQUcsRUFBRSxVQUFXO1FBQ2hCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO0tBQ2pFLENBQUM7SUFDRixJQUFJLE9BQU8sQ0FBQyxPQUFPO1FBQUUsUUFBUSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRSxJQUFJLE9BQU8sQ0FBQyxJQUFJO1FBQUUsUUFBUSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQy9DLElBQUksT0FBTyxDQUFDLFFBQVE7UUFBRSxRQUFRLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFFM0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLHNEQUFzRDtBQUN0RCxJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ1YsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLEVBQUUsQ0FBQztZQUV4QyxlQUFlLEVBQUUsQ0FBQztZQUVsQixNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUM7QUFDSCxDQUFDIn0=