@code-to-json/cli
Version:
83 lines • 5.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const start = process.hrtime();
const chalk_1 = require("chalk");
const commander = require("commander");
const debug = require("debug");
const leftpad = require("left-pad");
const generate_json_1 = require("./commands/generate-json");
const NS_PER_SEC = 1e9;
const PROGRAM_NAME = 'code-to-json';
process.title = PROGRAM_NAME;
const debugLog = debug('code-to-json:cli');
/**
* Convert a hrtime into human-readable text
* @param time proces.hrtime value
* @param message description of time value
* @internal
*/
function timeString(time, message) {
const msg = `(${message})`;
return `${chalk_1.default.yellow(leftpad((Math.round((time[0] * NS_PER_SEC + time[1]) / 1e3) / 1e3).toFixed(3), 6))} ms ${chalk_1.default.green(msg)}
`;
}
exports.timeString = timeString;
/**
* Build the commander program
* @internal
*/
function buildProgram() {
return commander
.name(PROGRAM_NAME)
.arguments('[entries...]')
.description('a thing')
.option('-p,--project [path]', 'path to tsconfig.json')
.option('-o,--out <path>', 'output path')
.option('--format [fmt]', 'data format', 'formatted');
}
exports.buildProgram = buildProgram;
/**
* Run a CLI action
* @param prog commander program
* @param runnable the action
* @internal
*/
function runAction(prog, runnable, log) {
return async function runActionImpl(entries, command) {
const opts = command.opts();
const { project } = opts;
const startupElapsed = process.hrtime(start);
log(timeString(startupElapsed, 'boot time'));
const beginTime = process.hrtime();
try {
await runnable(opts, project, entries).then(() => {
const timeElapsed = process.hrtime(beginTime);
log(timeString(timeElapsed, 'extraction time'));
});
}
catch (er) {
if (er.__invalid_arguments_error) {
log('completing due to invalid arguments');
console.error(chalk_1.default.red(`\n[ERROR] - ${er.message}\n`));
console.error(`${prog.help()}\n`);
throw new Error('invalid arguments');
}
else {
throw er;
}
}
};
}
exports.runAction = runAction;
/**
* Run the code-to-json cli command
* @param args command-line arguments
*/
function runCli(args) {
const prog = buildProgram();
prog
.action(runAction(prog, (opts, project, entries) => generate_json_1.default({ ...opts, project }, entries), debugLog))
.parse(args);
}
exports.runCli = runCli;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUUvQixpQ0FBMEI7QUFDMUIsdUNBQXVDO0FBQ3ZDLCtCQUErQjtBQUMvQixvQ0FBb0M7QUFDcEMsNERBQW9EO0FBRXBELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUN2QixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFDcEMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7QUFFN0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBc0IsRUFBRSxPQUFlO0lBQ2hFLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUM7SUFDM0IsT0FBTyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQ3BCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDbEYsT0FBTyxlQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztDQUN6QixDQUFDO0FBQ0YsQ0FBQztBQU5ELGdDQU1DO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWTtJQUMxQixPQUFPLFNBQVM7U0FDYixJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ2xCLFNBQVMsQ0FBQyxjQUFjLENBQUM7U0FDekIsV0FBVyxDQUFDLFNBQVMsQ0FBQztTQUN0QixNQUFNLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLENBQUM7U0FDdEQsTUFBTSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQztTQUN4QyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFSRCxvQ0FRQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUF1QixFQUN2QixRQU1rQixFQUNsQixHQUE2QztJQUU3QyxPQUFPLEtBQUssVUFBVSxhQUFhLENBQ2pDLE9BQTZCLEVBQzdCLE9BQTBCO1FBRTFCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsSUFBSTtZQUNGLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDL0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksRUFBRSxDQUFDLHlCQUF5QixFQUFFO2dCQUNoQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxNQUFNLEVBQUUsQ0FBQzthQUNWO1NBQ0Y7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBcENELDhCQW9DQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxJQUFjO0lBQ25DLE1BQU0sSUFBSSxHQUFHLFlBQVksRUFBRSxDQUFDO0lBRTVCLElBQUk7U0FDRCxNQUFNLENBQ0wsU0FBUyxDQUNQLElBQUksRUFDSixDQUFDLElBQUksRUFBRSxPQUFlLEVBQUUsT0FBNkIsRUFBRSxFQUFFLENBQ3ZELHVCQUFZLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFDN0MsUUFBUSxDQUNULENBQ0Y7U0FDQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakIsQ0FBQztBQWJELHdCQWFDIn0=