waka-cli
Version:
A simple CLI scaffolding for front-end projects.
86 lines (68 loc) • 2.75 kB
JavaScript
/**
* Created by pomy on 17/01/2017.
*/
/**
* Created by pomy on 16/01/2017.
* check the repos is exists on github.com.
*/
;
;
let axios = require('axios');
let ora = require('ora');
let chalk = require('chalk');
let log = require('./log');
let utils = require('../src/utils');
module.exports = function (repo,done){
let oraer = ora({
text: 'checking template from github.com...',
color:"blue"
}).start();
let repoInfo = repo.split('/');
const REQUEST_URL = `https://api.github.com/users/${repoInfo[0]}/repos`;
axios(utils.getAuthInfo(REQUEST_URL)).then((res) => {
log.tips();
if(res.status === 200 && Array.isArray(res.data) && res.data.length){
let reposName = [];
res.data.forEach(function (repo) {
reposName.push(repo.name);
});
if(reposName.indexOf(repoInfo[1]) > -1){
oraer.text = chalk.green('Template checked success from github.com.');
oraer.succeed();
log.tips();
done(repo);
}
} else {
oraer.stop();
log.tips();
log.tips(chalk.red(`Template checked fail: ${repo} not found on github.com`));
log.tips();
log.tips(`Please check all available official templates by ${chalk.blue('waka list')} in terminal.`);
process.exit(1);
}
}).catch((err) => {
if(err){
let res = err.response;
oraer.text = chalk.white(`chare cli:checking template ${repo} failed from github.com, error message as follows:`);
oraer.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.tips(chalk.red(` ${res.statusText}: ${res.headers.status}`));
log.tips();
log.tips(`Please check all available official templates by ${chalk.blue('waka list')} in terminal.`);
} else {
log.error(` ${err.message}`);
}
}
process.exit(1);
}
});
};