@electron-forge/cli
Version:
A complete tool for building modern Electron applications
58 lines • 6.43 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' };
import { getMakeOptions } from './electron-forge-make.js';
export async function runRelease() {
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('--target [target[,target...]]', 'A comma-separated list of deployment targets. (default: all publishers in your Forge config)')
.option('--from-make', `Release the distributables from a previous ${styleText('green', 'make')} run, instead of packaging and making the Electron application again.`)
// `--from-package` is declared here so that it shows up in the help
// output; it is parsed with the other make options by getMakeOptions().
.option('--from-package', `Make and release distributables from the output of a previous ${styleText('green', 'package')} run, instead of packaging the Electron application again.`)
// `--dry-run` and `--from-dry-run` are deprecated. They are hidden from
// the help output and print a deprecation warning when used.
.addOption(new Option('--dry-run', `Deprecated: run the ${styleText('green', 'make')} command instead.`).hideHelp())
.addOption(new Option('--from-dry-run', 'Deprecated: use --from-make instead.').hideHelp())
.allowUnknownOption(true)
.action(async (targetDir) => {
const dir = resolveWorkingDir(targetDir);
const options = program.opts();
if (options.dryRun) {
console.error(styleText('yellow', '⚠'), '`--dry-run` is deprecated and will be removed in a future major version. The `make` command now always saves its results, so run `electron-forge make` instead and then `electron-forge release --from-make` to release them.');
}
if (options.fromDryRun) {
console.error(styleText('yellow', '⚠'), '`--from-dry-run` is deprecated and will be removed in a future major version; use `--from-make` instead.');
}
initializeProxy();
const releaseOpts = {
dir,
interactive: true,
fromMake: Boolean(options.fromMake || options.fromDryRun),
dryRun: Boolean(options.dryRun),
};
if (options.target)
releaseOpts.publishTargets = options.target.split(',');
releaseOpts.makeOptions = await getMakeOptions();
await api.release(releaseOpts);
})
.parse(process.argv);
}
// 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) {
await runRelease();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlY3Ryb24tZm9yZ2UtcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbGVjdHJvbi1mb3JnZS1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1QyxPQUFPLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVU7SUFDOUIsT0FBTztTQUNKLE9BQU8sQ0FDTixXQUFXLENBQUMsT0FBTyxFQUNuQixlQUFlLEVBQ2YsNkJBQTZCLENBQzlCO1NBQ0EsVUFBVSxDQUFDLFlBQVksRUFBRSwyQkFBMkIsQ0FBQztTQUNyRCxRQUFRLENBQ1AsT0FBTyxFQUNQLCtEQUErRCxDQUNoRTtTQUNBLE1BQU0sQ0FDTCwrQkFBK0IsRUFDL0IsOEZBQThGLENBQy9GO1NBQ0EsTUFBTSxDQUNMLGFBQWEsRUFDYiw4Q0FBOEMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsdUVBQXVFLENBQ2hKO1FBQ0Qsb0VBQW9FO1FBQ3BFLHdFQUF3RTtTQUN2RSxNQUFNLENBQ0wsZ0JBQWdCLEVBQ2hCLGlFQUFpRSxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyw0REFBNEQsQ0FDM0o7UUFDRCx3RUFBd0U7UUFDeEUsNkRBQTZEO1NBQzVELFNBQVMsQ0FDUixJQUFJLE1BQU0sQ0FDUixXQUFXLEVBQ1gsdUJBQXVCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUNyRSxDQUFDLFFBQVEsRUFBRSxDQUNiO1NBQ0EsU0FBUyxDQUNSLElBQUksTUFBTSxDQUNSLGdCQUFnQixFQUNoQixzQ0FBc0MsQ0FDdkMsQ0FBQyxRQUFRLEVBQUUsQ0FDYjtTQUNBLGtCQUFrQixDQUFDLElBQUksQ0FBQztTQUN4QixNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFO1FBQzFCLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsS0FBSyxDQUNYLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQ3hCLCtOQUErTixDQUNoTyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFDeEIsMEdBQTBHLENBQzNHLENBQUM7UUFDSixDQUFDO1FBRUQsZUFBZSxFQUFFLENBQUM7UUFFbEIsTUFBTSxXQUFXLEdBQW1CO1lBQ2xDLEdBQUc7WUFDSCxXQUFXLEVBQUUsSUFBSTtZQUNqQixRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN6RCxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDaEMsQ0FBQztRQUNGLElBQUksT0FBTyxDQUFDLE1BQU07WUFDaEIsV0FBVyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6RCxXQUFXLENBQUMsV0FBVyxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFFakQsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQztTQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLHNEQUFzRDtBQUN0RCxJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDIn0=