UNPKG

infra-cli

Version:
57 lines (44 loc) 1.55 kB
const inquirer = require('inquirer') const fs = require('fs-extra') const chalk = require('chalk') const { runAdd } = require('./install') const { cacheDir, copyCacheToProject } = require('./scripts/cache') const { editPackageJson, getUserName } = require('./util/utils') const wrapLoading = require('./wrapLoading') async function generatorProjectFromCache (name, targetDir, cacheName) { try { if (!fs.existsSync(cacheDir)) { console.error(chalk.redBright('There is no cache!')) process.exit(1) } const readDir = fs.readdirSync(cacheDir) const templateList = readDir.filter((item) => fs.statSync(`${cacheDir}/${item}`).isDirectory()) if (!templateList.length) { console.error(chalk.redBright('There is no cache!')) process.exit(1) } if (typeof cacheName !== 'string') { const { template } = await inquirer.prompt({ name: 'template', type: 'list', choices: templateList, message: 'Please choose a template to create project:', pageSize: 10, loop: false, prefix: '' }) cacheName = template } const { packageDependencies, packageDevDependencies } = await wrapLoading( copyCacheToProject, 'coping ...', cacheName, targetDir ) runAdd(targetDir, packageDependencies, packageDevDependencies) await editPackageJson(targetDir, { name, author: getUserName() }) } catch (error) { console.error(chalk.redBright(error)) } } module.exports = generatorProjectFromCache