balanceofsatoshis
Version:
Lightning balance CLI
82 lines (63 loc) • 1.84 kB
JavaScript
const {getBorderCharacters} = require('table');
const renderTable = require('table').table;
const pkg = require('./../package.json');
const writeJsonFile = require('./write_json_file');
const border = getBorderCharacters('norc');
const emptyCell = ' ';
const {isArray} = Array;
const summary = n => `${n}_summary`;
/** Return an object result to a logger in a promise
A write method is required if file is passed
{
[exit]: <Final Exit Function>
[file]: <Write Result to JSON At Path String>
logger: {
info: <Info Function>
}
reject: <Reject Function>
resolve: <Resolve Function>
[table]: <Show as Table From Result Attribute String>
[write]: (path, data, (err) => {})
}
@returns
<Standard Callback Function> (err, res) => {}
*/
module.exports = ({exit, file, logger, reject, resolve, table, write}) => {
return (err, res) => {
if (!!err) {
logger.error({err});
return reject();
}
if (!!file) {
return writeJsonFile({file, write, json: res}, err => {
if (!!err) {
return reject(err);
}
return resolve();
});
}
// Exit early when the table is empty
if (!!table && res[table].length === [table].length) {
const [header] = res[table];
logger.info(renderTable([header, header.map(n => emptyCell)], {border}));
return resolve();
}
// Exit early when a table output is requested
if (!!table) {
logger.info(renderTable(res[table], {border}));
if (isArray(res[summary(table)])) {
logger.info(renderTable(res[summary(table)], {border}));
}
return resolve();
}
if (typeof res === 'number') {
logger.info(`${res}`);
} else {
logger.info(res);
}
if (!!exit) {
exit();
}
return resolve();
};
};