UNPKG

1.81 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const error_1 = require("./error");
5const signale_1 = require("signale");
6const RESOLVE = Symbol("resolve");
7const REJECT = Symbol("reject");
8const HANDLED = Symbol("executed");
9const LOGGER = Symbol("logger");
10function getLogger(ctx) {
11 const logger = ctx[LOGGER];
12 if (logger)
13 return logger;
14 throw new Error("Logger is not set in the context");
15}
16exports.getLogger = getLogger;
17function setLogger(ctx, logger) {
18 return Object.assign({}, ctx, { [LOGGER]: logger });
19}
20exports.setLogger = setLogger;
21function wrapHandler(handler) {
22 return (args) => tslib_1.__awaiter(this, void 0, void 0, function* () {
23 const logger = new signale_1.Signale({
24 stream: process.stderr,
25 disabled: args.silent
26 });
27 args[HANDLED] = true;
28 args = setLogger(args, logger);
29 handler(args)
30 .then(args[RESOLVE])
31 .catch(args[REJECT]);
32 });
33}
34exports.wrapHandler = wrapHandler;
35function wrapCommand(cmd) {
36 return Object.assign({}, cmd, { handler: wrapHandler(cmd.handler) });
37}
38exports.wrapCommand = wrapCommand;
39function handleParse(err, args, output) {
40 const ctx = args;
41 if (err || output) {
42 const msg = err ? err.message : "CLI error";
43 return ctx[REJECT](new error_1.CLIError(msg, { output, code: err ? 1 : 0 }));
44 }
45 if (!ctx[HANDLED]) {
46 ctx[RESOLVE]();
47 }
48}
49function parse(input, argv) {
50 return new Promise((resolve, reject) => {
51 const ctx = { [RESOLVE]: resolve, [REJECT]: reject };
52 input.parse(argv, ctx, handleParse);
53 });
54}
55exports.parse = parse;
56//# sourceMappingURL=command.js.map
\No newline at end of file