eap-cli
Version:
edgeros 脚手架
83 lines (77 loc) • 2.34 kB
JavaScript
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)
}
})
}