waka-cli
Version:
A simple CLI scaffolding for front-end projects.
78 lines (63 loc) • 2.75 kB
JavaScript
/**
* Created by pomy on 10/01/2017.
* 检验模板名是否存在,避免使用不存在的模板名时长时间的下载等待
*/
;
let axios = require('axios');
let ora = require('ora');
let chalk = require('chalk');
let log = require('./log');
let utils = require('../src/utils');
const REQUEST_URL = 'https://api.github.com/orgs/waka-templates/repos';
module.exports = function (template,officialTemplate,done){
log.tips();
template = template.indexOf('/') === -1 ? template : template.split('/')[0];
let spinner = ora({
text: "checking official template...",
color:"blue"
}).start();
axios(utils.getAuthInfo(REQUEST_URL)).then((res) => {
if (Array.isArray(res.data)) {
let reposName = [];
res.data.forEach(function (repo) {
reposName.push(repo.name);
});
if(reposName.indexOf(template) > -1){
spinner.text = chalk.green('Template checked success.');
spinner.succeed();
log.tips();
done(officialTemplate);
} else {
spinner.stop();
log.tips(`Failed to download template ${chalk.red(template)}: ${chalk.red(template)} doesn\'t exist.`);
log.tips();
log.tips(`Please check all available official templates by ${chalk.blue('waka list')} in terminal.`);
}
} else {
spinner.text = chalk.white('waka cli:checking template failed, error message as follows:');
spinner.fail();
log.tips();
log.error(` ${res.statusText}: ${res.data.message}`);
}
}).catch((err) => {
if(err){
let res = err.response;
spinner.text = chalk.white('waka cli:checking official template failed, error message as follows:');
spinner.fail();
log.tips();
if(res && res.status === 403){
//api rate limit:https://developer.github.com/v3/#rate-limiting
log.tips(chalk.red(` ${res.statusText}: ${res.data.message}\n\ndocumentation: ${res.data.documentation_url}`));
log.tips();
log.tips(` Please set auth token to get a higher rate limit by ${chalk.blue('waka token')}. Check out the documentation for more details.`);
log.tips();
log.tips(' documentation: https://developer.github.com/v3/auth/#basic-authentication');
} else {
if(res){
log.error(` ${res.statusText}: ${res.data.message}`);
}
log.error(` ${err.message}`);
}
}
});
};