UNPKG

@code-to-json/cli

Version:
83 lines 5.75 kB
"use strict"; 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=