UNPKG

infra-cli

Version:
63 lines (53 loc) 2 kB
const semver = require('semver') const path = require('path') const fs = require('fs-extra') const chalk = require('chalk') const { checkAppName, isSafeToCreateProjectIn } = require('./util/utils') const generatorProjectFromCustom = require('./generatorProjectFromCustom') const generatorProjectFromUrl = require('./generatorProjectFromUrl') const generatorProjectFromCache = require('./generatorProjectFromCache') const wrapLoading = require('./wrapLoading') const generatorProjectFromTemplate = require('./generatorProjectFromTemplate') const generatorBackendProjectFromTemplate = require('./generatorBackendProjectFromTemplate') async function createProjectDir (name, force) { try { if (force) { await fs.emptyDir(name) } else { fs.ensureDirSync(name) } } catch (error) { console.error(chalk.redBright(error)) } } module.exports = async function create (name, options) { const { template, clone, force, cache, templateBe } = options const unsupportedNodeVersion = !semver.satisfies(process.version, '>=8.10.0') if (unsupportedNodeVersion) { console.log( chalk.yellow( `You are using Node ${process.version} so the project will be bootstrapped with an old unsupported version of tools.\n\n` + 'Please update to Node 8.10 or higher for a better, fully supported experience.\n' ) ) } const root = path.resolve(name) const appName = path.basename(root) checkAppName(appName) await wrapLoading(createProjectDir, 'creating dir ...', name, force) if (!isSafeToCreateProjectIn(root, name)) { process.exit(1) } // process.chdir(root) if (clone) { generatorProjectFromUrl(name, root, clone) } else if (template) { generatorProjectFromTemplate(name, root, template) } else if (cache) { generatorProjectFromCache(name, root, cache) } else if (templateBe) { generatorBackendProjectFromTemplate(name, root, templateBe) } else { generatorProjectFromCustom(name, root) } }