UNPKG

@sap/cli-core

Version:

Command-Line Interface (CLI) Core Module

44 lines (43 loc) 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.create = void 0; const logger_1 = require("../../logger"); function getLogger(origin) { return (0, logger_1.get)(`commands.handler.or:${origin}`); } const create = (origin, ...handlers) => { const { stack } = new Error(); return async (command) => { const { trace } = getLogger(origin); trace(`or:${origin}: preparing handlers`); const commandHandlers = []; for (const handler of handlers) { // eslint-disable-next-line no-await-in-loop commandHandlers.push(await handler(command)); } return async (...args) => { const { debug } = getLogger(origin); trace(`or:${origin}: processing handlers`); let handlerFailed = false; for (const handler of commandHandlers) { handlerFailed = false; try { // eslint-disable-next-line no-await-in-loop await handler(...args); trace(`handler succeeded, exiting loop`); break; } catch (err) { debug(`handler failed`, err.stack || err); handlerFailed = true; } } if (handlerFailed) { trace("handler was created from:", stack); throw new Error("all handlers failed"); } }; }; }; exports.create = create; /* jscpd:ignore-end */