UNPKG

eap-cli

Version:

edgeros 脚手架

83 lines (77 loc) 2.34 kB
const ora = require('ora') const inquirer = require('inquirer') const chalk = require('chalk') const request = require('request') const download = require('download-git-repo') module.exports = (name) => { let promptList = [ ]; if(name === undefined) { promptList.push( { type: 'input', message: '请输入项目名字', name: 'projectName', validate (val) { if (val !== '') { return true } return '项目名称不能为空' } } ); } // console.log(promptList); request({ // url: 'https://api.github.com/users/template-organization/repos', url: 'https://api.github.com/users/edgeros-cli/repos', headers: { 'User-Agent': 'edgeros' } }, (err, res, body) =>{ if (err) { console.log(chalk.red('查询模版列表失败')) console.log(chalk.red(err)) process.exit(); } const requestBody = JSON.parse(body) if (Array.isArray(requestBody)) { let tplNames = []; requestBody.forEach(repo => { tplNames.push(repo.name); }); promptList.push({ type: 'list', message: '请选择模版', name: 'tplName', choices: tplNames }); inquirer.prompt(promptList).then(answers => { let ind = requestBody.find(function (ele) { return answers.tplName == ele.name; }); let gitUrl = `${ind.full_name}#${ind.default_branch}`; defaultUrl = './'; if (name === undefined) { name = answers.projectName; } // projectUrl = `${defaultUrl}/${answers.projectName}`, projectUrl = `${defaultUrl}/${name}`; spinner = ora('\n 开始生成项目,请等待...'); spinner.start(); download(gitUrl, projectUrl, (error)=>{ spinner.stop(); if (error) { console.log('模版下载失败……') console.log(error) process.exit() } console.log(chalk.green(`\n √ ${name} 项目生成完毕!`)) // console.log(`\n cd ${name} && npm install \n`) }) }) } else { console.error(requestBody.message) } }) }