UNPKG

@electron-forge/cli

Version:

A complete tool for building modern Electron applications

126 lines 10.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const node_fs_1 = __importDefault(require("node:fs")); const core_1 = require("@electron-forge/core"); const prompts_1 = require("@inquirer/prompts"); const prompt_adapter_inquirer_1 = require("@listr2/prompt-adapter-inquirer"); const chalk_1 = __importDefault(require("chalk")); const commander_1 = require("commander"); const listr2_1 = require("listr2"); require("./util/terminate"); const package_json_1 = __importDefault(require("../package.json")); const resolve_working_dir_1 = require("./util/resolve-working-dir"); commander_1.program .version(package_json_1.default.version, '-V, --version', 'Output the current version.') .helpOption('-h, --help', 'Output usage information.') .argument('[dir]', 'Directory to initialize the project in. Defaults to the current directory.') .option('-t, --template [name]', 'Name of the Forge template to use.') .option('-c, --copy-ci-files', 'Whether to copy the templated CI files.') .option('-f, --force', 'Whether to overwrite an existing directory.') .option('--skip-git', 'Skip initializing a git repository in the initialized project.') .option('--electron-version [version]', 'Set a specific Electron version for your Forge project. Can take in a version string (e.g. `38.3.0`) or `latest`, `beta`, or `nightly` tags.') .action(async (dir) => { const options = commander_1.program.opts(); const tasks = new listr2_1.Listr([ { task: async (initOpts) => { initOpts.interactive = true; initOpts.template = options.template ?? 'base'; initOpts.copyCIFiles = Boolean(options.copyCiFiles); initOpts.force = Boolean(options.force); initOpts.skipGit = Boolean(options.skipGit); initOpts.dir = (0, resolve_working_dir_1.resolveWorkingDir)(dir, false); initOpts.electronVersion = options.electronVersion ?? 'latest'; }, }, { task: async (initOpts, task) => { // only run interactive prompts if no args passed and not in CI environment if (Object.keys(options).length > 0 || process.env.CI || !process.stdout.isTTY) { return; } const prompt = task.prompt(prompt_adapter_inquirer_1.ListrInquirerPromptAdapter); if (typeof initOpts.dir === 'string' && node_fs_1.default.existsSync(initOpts.dir) && (await node_fs_1.default.promises.readdir(initOpts.dir)).length > 0) { const confirmResult = await prompt.run(prompts_1.confirm, { message: `${chalk_1.default.cyan(initOpts.dir)} is not empty. Would you like to continue and overwrite existing files?`, default: false, }); if (confirmResult) { initOpts.force = true; } else { task.output = 'Directory is not empty. Exiting.'; process.exit(0); } } const bundler = await prompt.run(prompts_1.select, { message: 'Select a bundler', choices: [ { name: 'None', value: 'base', }, { name: 'Vite (Experimental)', value: 'vite', }, { name: 'webpack', value: 'webpack', }, ], }); let language; if (bundler !== 'base') { language = await prompt.run(prompts_1.select, { message: 'Select a programming language', choices: [ { name: 'JavaScript', value: undefined, }, { name: 'TypeScript', value: 'typescript', }, ], }); } initOpts.template = `${bundler}${language ? `-${language}` : ''}`; // TODO: add prompt for passing in an exact version as well initOpts.electronVersion = await prompt.run(prompts_1.select, { message: 'Select an Electron release', choices: [ { name: 'electron@latest', value: 'latest', }, { name: 'electron@beta', value: 'beta', }, { name: 'electron-nightly@latest', value: 'nightly', }, ], }); initOpts.skipGit = !(await prompt.run(prompts_1.confirm, { message: `Would you like to initialize Git in your new project?`, default: true, })); }, }, ], { concurrent: false }); const initOpts = await tasks.run(); await core_1.api.init(initOpts); }); commander_1.program.parse(process.argv); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlY3Ryb24tZm9yZ2UtaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbGVjdHJvbi1mb3JnZS1pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXlCO0FBRXpCLCtDQUF3RDtBQUN4RCwrQ0FBb0Q7QUFDcEQsNkVBQTZFO0FBQzdFLGtEQUEwQjtBQUMxQix5Q0FBb0M7QUFDcEMsbUNBQStCO0FBRS9CLDRCQUEwQjtBQUMxQixtRUFBMEM7QUFFMUMsb0VBQStEO0FBSy9ELG1CQUFPO0tBQ0osT0FBTyxDQUFDLHNCQUFXLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQztLQUM1RSxVQUFVLENBQUMsWUFBWSxFQUFFLDJCQUEyQixDQUFDO0tBQ3JELFFBQVEsQ0FDUCxPQUFPLEVBQ1AsNEVBQTRFLENBQzdFO0tBQ0EsTUFBTSxDQUFDLHVCQUF1QixFQUFFLG9DQUFvQyxDQUFDO0tBQ3JFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSx5Q0FBeUMsQ0FBQztLQUN4RSxNQUFNLENBQUMsYUFBYSxFQUFFLDZDQUE2QyxDQUFDO0tBQ3BFLE1BQU0sQ0FDTCxZQUFZLEVBQ1osZ0VBQWdFLENBQ2pFO0tBQ0EsTUFBTSxDQUNMLDhCQUE4QixFQUM5Qiw4SUFBOEksQ0FDL0k7S0FDQSxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0lBQ3BCLE1BQU0sT0FBTyxHQUFHLG1CQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFLLENBQ3JCO1FBQ0U7WUFDRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBaUIsRUFBRTtnQkFDdEMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7Z0JBQy9DLFFBQVEsQ0FBQyxXQUFXLEdBQUcsT0FB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