UNPKG

skypager-project-types-electron-app

Version:

skypager electron app project type

85 lines (67 loc) 2.41 kB
import isEmpty from 'lodash/isEmpty' import omit from 'lodash/pick' export function configure(program) { return program .command('electron:init') .description('initialize a new electron app project') } export function execute(options = {}, context = {}) { const { project } = context initializeElectronProject(project, options).then(() => { project.cli.print('Finished!') }) } export async function initializeElectronProject(project, options) { const { print, clear, randomBanner } = project.cli clear() await randomBanner('Skypager') await prepareProjectDirectory(project, options) await installDependencies(project, options) } async function prepareProjectDirectory(project, options = {}) { const { print } = project.cli const appFolderExists = await project.existsAsync(project.resolve('app')) const manifestExists = await project.existsAsync(project.resolve('app')) print(`Preparing App Folder`) if (!appFolderExists) { await project.mkdirpAsync(project.resolve('app')) } print(`Preparing App Manifest`) if (!manifestExists) { const templateJson = require('../../templates/production.package.json') await project.writeFileAsync( project.resolve('app', 'package.json'), JSON.stringify(templateJson, null, 2), 'utf8' ) } } async function installDependencies(project, options = {}) { const { print, spinner: Spinner } = project.cli print('Performing dependencies check') const { devDependencies } = require('../../templates/dev-dependencies.json') const manifest = project.manifest const existingDevDependencies = project.get('manifest.devDependencies', {}) const missingDevDependencies = omit(existingDevDependencies, Object.keys(devDependencies)) if (!isEmpty(missingDevDependencies)) { print('You are missing the following devDependencies:', 4) print(Object.keys(missingDevDependencies), 6) print('We have gone ahead and added them for you') const updates = Object.assign({}, manifest, { devDependencies: { ...manifest.devDependencies || {}, ...devDependencies, } }) await project.writeFileAsync( project.paths.manifest, JSON.stringify(updates, null, 2), 'utf8' ) require('child_process').execSync('npm install', { cwd: project.cwd, stdio: 'inherit' }) print('Finished') } }