UNPKG

stratumn-cli

Version:
75 lines (57 loc) 1.8 kB
import commander from 'commander'; import moment from 'moment'; import chalk from 'chalk'; import readPackageSync from '../utils/readPackageSync'; import get from '../utils/get'; function parseTime(str) { if (str.match(/^[0-9]{5,}$/)) { return parseInt(str, 10); } const val = moment(str).valueOf(); if (isNaN(val)) { process.stderr.write('Invalid time\n', () => process.exit(1)); } return val; } commander .version(readPackageSync('version')) .usage('<app-name>') .option('-f, --from <time>', 'from timestamp (milliseconds) or date', parseTime) .option('-t, --to <time>', 'to timestamp (milliseconds) or date', parseTime) .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(' '); } const filters = []; if (commander.from) { filters.push(['from', commander.from]); } if (commander.to) { filters.push(['to', commander.to]); } let queryString = ''; if (filters.length) { queryString = '?' + filters.map(filter => filter[0] + '=' + filter[1]); } get('/applications/' + commander.args[0] + '/metrics' + queryString, true) .then(metrics => { let content = ''; content += rpad('OPERATIONS', 16) + rpad('FOSSILS', 16) + 'ERRORS\n'; content += rpad(metrics.operationCount + '', 16); content += chalk.cyan(rpad(metrics.fossilCount + '', 16)); content += chalk.red(metrics.errorCount) + '\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); });