UNPKG

@kosko/cli

Version:

Organize Kubernetes manifests in JavaScript.

61 lines 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = exports.wrapCommand = exports.wrapHandler = exports.setLogger = exports.getLogger = void 0; const tslib_1 = require("tslib"); const error_1 = require("./error.js"); const signale_1 = tslib_1.__importDefault(require("signale")); const RESOLVE = Symbol("resolve"); const REJECT = Symbol("reject"); const HANDLED = Symbol("executed"); const LOGGER = Symbol("logger"); function getLogger(ctx) { const logger = ctx[LOGGER]; if (logger) return logger; throw new Error("Logger is not set in the context"); } exports.getLogger = getLogger; function setLogger(ctx, logger) { return { ...ctx, [LOGGER]: logger }; } exports.setLogger = setLogger; function wrapHandler(handler) { return async (args) => { const logger = new signale_1.default.Signale({ stream: process.stderr, disabled: args.silent }); args[HANDLED] = true; args = setLogger(args, logger); handler(args).then(args[RESOLVE]).catch(args[REJECT]); }; } exports.wrapHandler = wrapHandler; function wrapCommand(cmd) { return { ...cmd, handler: wrapHandler(cmd.handler) }; } exports.wrapCommand = wrapCommand; function handleParse(err, args, output) { const ctx = args; if (err || output) { const msg = err ? err.message : "CLI error"; return ctx[REJECT](new error_1.CLIError(msg, { output, code: err ? 1 : 0 })); } if (!ctx[HANDLED]) { ctx[RESOLVE](); } } function parse(input, argv) { return new Promise((resolve, reject) => { const ctx = { [RESOLVE]: resolve, [REJECT]: reject }; input.parse(argv, ctx, handleParse); }); } exports.parse = parse; //# sourceMappingURL=command.js.map