UNPKG

@sinotron/cli

Version:

Simple framework for Typescript Electron projects

52 lines (51 loc) 2.09 kB
import { CliHelper } from '../cli.helper.js'; import { logError, logInfo, logNotice } from '../../utils/log.js'; import { FrameworkSetup } from '../setup-command/FrameworkSetup.js'; import { ProgramLaunchHelper } from '../../utils/program-launch-helper.js'; import { _proc } from '@utilis/proc'; import { _join } from '@utilis/fs'; import { ask } from '@utilis/cli'; export class ProjectCommand { static init(app) { app.command('project') .description('Create electron-vite project in the current folder.') .option('--vscode', 'Launch the project in VSCode') .argument('[projectName]', 'The project name') .action(async (...args) => { const ctx = CliHelper.getContext(args); let projectName = ctx.arg0?.trim() || ''; if (!projectName) { const ans = await ask.input('Enter the project name:'); if (!ans?.trim()) { logNotice('No project name provided. Aborting.'); process.exit(0); } projectName = ans?.trim(); } const cmd = 'npm create electron-vite@latest'; const cmdArgs = ['create', 'electron-vite@latest']; if (projectName) { cmdArgs.push(projectName); } const originalCwd = process.cwd(); try { logInfo(`--> Creating electron project using "${cmd}"...`); await _proc.spawn('npm', cmdArgs, { silent: false }); const projectRoot = _join(originalCwd, projectName); if (projectName) { process.chdir(projectRoot); await FrameworkSetup.run(); process.chdir(originalCwd); } if (ctx.options?.vscode === true) { ProgramLaunchHelper.vscode(projectRoot); } } catch (e) { logError(e.message); } }); } }