@hotglue/cli
Version:
hotglue CLI tools
108 lines (89 loc) • 3.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.handler = exports.desc = exports.command = exports.builder = void 0;
var _debug = _interopRequireDefault(require("../../helpers/debug"));
var _ora = _interopRequireDefault(require("ora"));
var _axios = _interopRequireDefault(require("axios/dist/node/axios.cjs"));
var _cliTable = _interopRequireDefault(require("cli-table"));
var _descriptions = _interopRequireDefault(require("../../helpers/descriptions"));
var _print = require("../../helpers/print");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const debug = (...args) => {
const debug = (0, _debug.default)('commands:jobs:list');
debug(...args);
};
const command = 'list';
exports.command = command;
const desc = 'List jobs';
exports.desc = desc;
const builder = async yargs => {
debug('builder', command);
return yargs.option('flow', _descriptions.default.options['flow'].config).demandOption('flow', _descriptions.default.options['flow'].demandText).option('tenant', { ..._descriptions.default.options['tenant'].config,
default: 'default'
}).option('count', _descriptions.default.options['count'].config);
};
exports.builder = builder;
const handler = async argv => {
debug('handler', command, argv);
const {
hg,
json,
apikey,
env,
flow,
tenant,
count
} = argv;
const {
clientApiBaseUri
} = hg;
let message;
let spinner = (0, _ora.default)();
try {
// 1. get data from client-api backend
message = (0, _print.themed)(`Retrieving jobs for environment: ${(0, _print.themed)(env, 'info')} flow: ${(0, _print.themed)(flow, 'info')} tenant: ${(0, _print.themed)(tenant, 'info')}...`);
const uri = `${clientApiBaseUri}/${env}/${flow}/${tenant}/jobs${count ? `?count=${count}` : ''}`;
debug('requesting:', uri);
!json && spinner.start((0, _print.themed)(`In progress: ${message}...`, 'secondary'));
const {
data
} = await _axios.default.get(uri, {
headers: {
'x-api-key': apikey
}
});
!json && spinner.succeed((0, _print.themed)(`Finished: ${message}.`, 'secondary'));
debug('response-data', data); // exit if there is no data
if (!data || data.length === 0) {
json ? (0, _print.printJSON)([]) : spinner.warn((0, _print.themed)(`Warning: ${(0, _print.themed)('No jobs for the specified environment, flow and tenant')}.`, 'secondary'));
return;
}
if (json) {
(0, _print.printJSON)(data);
} else {
// generate results table
const table = new _cliTable.default({
head: ['name', 'details']
});
data.forEach(item => table.push([item.job_name, JSON.stringify(item, undefined, 2)])); // print results
console.log(table.toString());
}
} catch (err) {
if (json) {
(0, _print.printJSON)({
status: 'error',
error: err
});
} else {
spinner.fail((0, _print.themed)(`Error: ${message}.`, 'secondary'));
(0, _print.pr)((0, _print.themed)(`Message: ${(0, _print.themed)(err.message)}`, 'secondary'));
debug(err);
if (err && err.response && err.response.data) {
debug('response', err.response.data);
}
}
}
};
exports.handler = handler;