UNPKG

stratumn-cli

Version:
135 lines (101 loc) 4.08 kB
'use strict'; 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).option('-l, --limit <int>', 'limit number of operations', parseInt).option('-s, --state <string>', 'filter by state').option('-z, --fossilized <bool>', 'show/hide fossilized operations').option('-S, --search <string>', 'search by map id').option('-O, --order <string>', 'specify order').option('-F, --format <string>', 'specify format').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 = ['from', 'to', 'limit', 'state', 'fossilized', 'search', 'order', 'format'].reduce(function (curr, opt) { if (_commander2.default[opt]) { curr.push([opt, _commander2.default[opt]]); } return curr; }, []); var url = void 0; if (_commander2.default.args.length) { url = '/applications/' + _commander2.default.args[0] + '/operations'; } else { url = '/operations'; } var queryString = ''; if (filters.length) { queryString = '?' + filters.map(function (filter) { return filter[0] + '=' + filter[1]; }).join('&'); } (0, _get2.default)(url + queryString, true).then(function (ops) { if (_commander2.default.format === 'CSV') { process.stdout.write(ops, process.exit); return; } if (_commander2.default.format === 'JSON') { process.stdout.write(JSON.stringify(ops, null, ' ') + '\n', process.exit); return; } var content = ''; ops.forEach(function (op) { content += rpad('TIME', 18) + _chalk2.default.bold((0, _moment2.default)(op.time).toISOString()) + '\n'; if (!_commander2.default.args.length) { content += rpad('APPLICATION NAME', 18) + op.applicationName + '\n'; content += rpad('APPLICATION ID', 18) + op.applicationId + '\n'; } content += rpad('CHAIN ID', 18) + op.mapId + '\n'; content += rpad('LINK HASH', 18) + op.linkHash + '\n'; content += rpad('PREV LINK HASH', 18) + op.prevLinkHash + '\n'; content += rpad('FOSSILIZED', 18) + op.fossilized + '\n'; content += rpad('STATE', 18); switch (op.state) { case 'SUCCESS': content += _chalk2.default.green(op.state) + '\n'; break; case 'ERROR': content += _chalk2.default.red(op.state) + '\n'; break; default: content += op.state + '\n'; } content += rpad('ERROR', 18) + op.errorMessage + '\n'; content += rpad('AGENT NAME', 18) + op.agentName + '\n'; content += rpad('REQUEST IP', 18) + op.requestIp + '\n'; content += rpad('TOTAL TIME', 18) + op.totalTimeMs.toFixed(2) + ' ms\n'; content += '\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); });