@electron-forge/cli
Version:
A complete tool for building modern Electron applications
55 lines • 5.17 kB
JavaScript
// This file requires a shebang above. If it is missing, this is an error.
import { styleText } from 'node:util';
import { program } from 'commander';
import semver from 'semver';
import packageJSON from '../package.json' with { type: 'json' };
import './util/terminate.js';
import { checkSystem } from './util/check-system.js';
if (!semver.satisfies(process.versions.node, packageJSON.engines.node)) {
console.error(styleText('red', '✖'), `You are running Node.js version ${styleText('red', process.versions.node)}, but Electron Forge requires Node.js ${styleText('red', packageJSON.engines.node)}. \n`);
process.exit(1);
}
// Listr2 might be unsupported in certain versions, so import it after the Node version check.
// eslint-disable-next-line import/order
import { Listr } from 'listr2';
program
.version(packageJSON.version, '-V, --version', 'Output the current version.')
.helpOption('-h, --help', 'Output usage information.')
.command('start', 'Start the current Electron application in development mode.')
.command('package', 'Package the current Electron application.')
.command('make', 'Generate distributables for the current Electron application.')
.command('release', 'Release the current Electron application.')
// `publish` is a deprecated alias for `release`. It is hidden from the help
// output and prints a deprecation warning when invoked (see
// electron-forge-publish.ts).
.command('publish', 'Publish the current Electron application.', {
hidden: true,
})
.passThroughOptions(true)
.hook('preSubcommand', async (_command, subcommand) => {
if (!process.argv.includes('--help') && !process.argv.includes('-h')) {
const runner = new Listr([
{
title: 'Checking your system',
task: async (ctx, task) => {
ctx.command = subcommand.name();
ctx.git = !process.argv.includes('--skip-git');
return await checkSystem(task);
},
},
], {
concurrent: false,
exitOnError: true,
fallbackRendererCondition: Boolean(process.env.DEBUG) || Boolean(process.env.CI),
});
try {
await runner.run();
}
catch {
process.exit(1);
}
}
});
program.parse(process.argv);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlY3Ryb24tZm9yZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZWxlY3Ryb24tZm9yZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLDBFQUEwRTtBQUUxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ2hFLE9BQU8scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdkUsT0FBTyxDQUFDLEtBQUssQ0FDWCxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUNyQixtQ0FBbUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsU0FBUyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3BLLENBQUM7SUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCw4RkFBOEY7QUFDOUYsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0IsT0FBTztLQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQztLQUM1RSxVQUFVLENBQUMsWUFBWSxFQUFFLDJCQUEyQixDQUFDO0tBQ3JELE9BQU8sQ0FDTixPQUFPLEVBQ1AsNkRBQTZELENBQzlEO0tBQ0EsT0FBTyxDQUFDLFNBQVMsRUFBRSwyQ0FBMkMsQ0FBQztLQUMvRCxPQUFPLENBQ04sTUFBTSxFQUNOLCtEQUErRCxDQUNoRTtLQUNBLE9BQU8sQ0FBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUM7SUFDaEUsNEVBQTRFO0lBQzVFLDREQUE0RDtJQUM1RCw4QkFBOEI7S0FDN0IsT0FBTyxDQUFDLFNBQVMsRUFBRSwyQ0FBMkMsRUFBRTtJQUMvRCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7S0FDRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQ3RCO1lBQ0U7Z0JBQ0UsS0FBSyxFQUFFLHNCQUFzQjtnQkFDN0IsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0JBQ3hCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNoQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQy9DLE9BQU8sTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7YUFDRjtTQUNGLEVBQ0Q7WUFDRSxVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSTtZQUNqQix5QkFBeUIsRUFDdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ3hELENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyJ9