stratumn-cli
Version:
CLI tools for Stratumn
93 lines (65 loc) • 2.42 kB
JavaScript
;
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _readPackageSync = require('../utils/readPackageSync');
var _readPackageSync2 = _interopRequireDefault(_readPackageSync);
var _get = require('../utils/get');
var _get2 = _interopRequireDefault(_get);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function parseTime(str) {
if (str.match(/^[0-9]{5,}$/)) {
return parseInt(str, 10);
}
var val = (0, _moment2.default)(str).valueOf();
if (isNaN(val)) {
process.stderr.write('Invalid time\n', function () {
return process.exit(1);
});
}
return val;
}
_commander2.default.version((0, _readPackageSync2.default)('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 (_commander2.default.args.length !== 1) {
_commander2.default.help();
}
function handleError(err) {
process.stderr.write(err.message + '\n', function () {
return process.exit(1);
});
}
function rpad(str, cols) {
return str + new Array(Math.max(0, cols - str.length) + 1).join(' ');
}
var filters = [];
if (_commander2.default.from) {
filters.push(['from', _commander2.default.from]);
}
if (_commander2.default.to) {
filters.push(['to', _commander2.default.to]);
}
var queryString = '';
if (filters.length) {
queryString = '?' + filters.map(function (filter) {
return filter[0] + '=' + filter[1];
});
}
(0, _get2.default)('/applications/' + _commander2.default.args[0] + '/metrics' + queryString, true).then(function (metrics) {
var content = '';
content += rpad('OPERATIONS', 16) + rpad('FOSSILS', 16) + 'ERRORS\n';
content += rpad(metrics.operationCount + '', 16);
content += _chalk2.default.cyan(rpad(metrics.fossilCount + '', 16));
content += _chalk2.default.red(metrics.errorCount) + '\n';
process.stdout.write(content, process.exit);
}).catch(function (err) {
if (err.code === 'ENOENT') {
process.stdout.write('You must login first\n', function () {
return process.exit(1);
});
return;
}
handleError(err);
});