infra-cli
Version:
28 lines (23 loc) • 862 B
JavaScript
const chalk = require('chalk')
const download = require('download-git-repo')
const ora = require('ora')
const util = require('util')
const { runInstall } = require('./install')
const { editPackageJson, getUserName } = require('./util/utils')
async function generatorProjectFromUrl (name, targetDir, templateUrl) {
if (!templateUrl.match(/.\.git(\/)?$/)) {
console.log(chalk.redBright('There is no template url'))
process.exit(1)
}
const spinner = ora('Fetching remote preset ...').start()
try {
await util.promisify(download)(`direct:${templateUrl}`, targetDir, { clone: true })
spinner.succeed()
} catch (err) {
spinner.fail(`Failed fetching remote preset ${templateUrl}.`)
throw err
}
await editPackageJson(targetDir, { name, author: getUserName() })
runInstall(targetDir)
}
module.exports = generatorProjectFromUrl