stratumn-cli
Version:
CLI tools for Stratumn
89 lines (73 loc) • 2.41 kB
JavaScript
import util from 'util';
import commander from 'commander';
import chalk from 'chalk';
import readPackageSync from '../utils/readPackageSync';
import get from '../utils/get';
import config from '../config';
commander
.version(readPackageSync('version'))
.usage('<app-name>')
.option('-s, --script', 'show script')
.option('-j, --job', 'show active or last job')
.parse(process.argv);
if (commander.args.length !== 1) {
commander.help();
}
function handleError(err) {
process.stderr.write(err.message + '\n', () => process.exit(1));
}
function rpad(str, cols) {
return str + new Array(Math.max(0, cols - str.length) + 1).join(' ');
}
get('/applications/' + commander.args[0], true)
.then(app => {
let content = '';
if (commander.script) {
content = app.script;
} else if (commander.job) {
content += rpad('TYPE', 16) + app.job.type + '\n';
content += rpad('STATE', 16) + app.job.state + '\n';
if (app.job.type === 'DEPLOY') {
content += rpad('PLAN', 16) + app.job.plan + '\n';
content += rpad('AGENTS', 16) + app.job.agentCount + '\n';
}
} else {
content += rpad('NAME', 16) + chalk.bold(app.name) + '\n';
let role = rpad(app.role, 14);
switch (app.role) {
case 'OWNER':
role = chalk.green(role);
break;
case 'ADMIN':
role = chalk.cyan(role);
break;
default:
}
content += rpad('ROLE', 16) + role + '\n';
content += rpad('PLAN', 16) + app.plan + '\n';
content += rpad('URL', 16) + util.format(config.applicationUrl, app.name) + '\n';
content += rpad('AGENTS', 16) + rpad('ID', 16) + rpad('NAME', 24) + 'STATE\n';
app.agents.forEach(agent => {
content += rpad('', 16) + rpad(agent.id.substr(0, 12), 16);
content += rpad(agent.name, 24);
switch (agent.state) {
case 'RUNNING':
content += chalk.green(agent.state) + '\n';
break;
case 'STOPPED':
content += chalk.red(agent.state) + '\n';
break;
default:
content += agent.state + '\n';
}
});
}
process.stdout.write(content, process.exit);
})
.catch(err => {
if (err.code === 'ENOENT') {
process.stdout.write('You must login first\n', () => process.exit(1));
return;
}
handleError(err);
});