UNPKG

jsii-release

Version:

Release jsii modules to multiple package managers

49 lines 5.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parallelShell = void 0; const p_queue_1 = __importDefault(require("p-queue")); const corking_1 = require("../../help/corking"); const sleep_1 = require("../../help/sleep"); /** * Run a function in parallel with cached output */ async function parallelShell(inputs, block, swallowError) { // Limit to 10 for now, too many instances of Maven exhaust the CodeBuild instance memory const q = new p_queue_1.default({ concurrency: Number(process.env.CONCURRENCY) || 10 }); await q.addAll(inputs.map(input => async () => { let attempts = 10; let sleepMs = 500; while (true) { const output = new corking_1.MemoryStream(); try { await block(input, output); return; } catch (e) { switch (swallowError === null || swallowError === void 0 ? void 0 : swallowError(input, output.toString())) { case 'skip': return; case 'retry': if (--attempts > 0) { await (0, sleep_1.sleep)(Math.floor(Math.random() * sleepMs)); sleepMs *= 2; continue; } break; case 'fail': case undefined: break; } // eslint-disable-next-line no-console console.error(output.toString()); throw e; } } })); await q.onEmpty(); } exports.parallelShell = parallelShell; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwtc2hlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29kZWFydGlmYWN0L3N0YWdpbmcvcGFyYWxsZWwtc2hlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0RBQTZCO0FBQzdCLGdEQUFrRDtBQUNsRCw0Q0FBeUM7QUFLekM7O0dBRUc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUNqQyxNQUFXLEVBQ1gsS0FBNkQsRUFDN0QsWUFBc0Q7SUFFdEQseUZBQXlGO0lBQ3pGLE1BQU0sQ0FBQyxHQUFHLElBQUksaUJBQU0sQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDNUMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNsQixPQUFPLElBQUksRUFBRTtZQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQVksRUFBRSxDQUFDO1lBQ2xDLElBQUk7Z0JBQ0YsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixPQUFPO2FBQ1I7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixRQUFRLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRyxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7b0JBQ2hELEtBQUssTUFBTTt3QkFDVCxPQUFPO29CQUVULEtBQUssT0FBTzt3QkFDVixJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRTs0QkFDbEIsTUFBTSxJQUFBLGFBQUssRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDOzRCQUNqRCxPQUFPLElBQUksQ0FBQyxDQUFDOzRCQUNiLFNBQVM7eUJBQ1Y7d0JBQ0QsTUFBTTtvQkFFUixLQUFLLE1BQU0sQ0FBQztvQkFDWixLQUFLLFNBQVM7d0JBQ1osTUFBTTtpQkFDVDtnQkFFRCxzQ0FBc0M7Z0JBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNwQixDQUFDO0FBekNELHNDQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQUXVldWUgZnJvbSAncC1xdWV1ZSc7XG5pbXBvcnQgeyBNZW1vcnlTdHJlYW0gfSBmcm9tICcuLi8uLi9oZWxwL2NvcmtpbmcnO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tICcuLi8uLi9oZWxwL3NsZWVwJztcblxuXG5leHBvcnQgdHlwZSBFcnJvclJlc3BvbnNlID0gJ2ZhaWwnIHwgJ3NraXAnIHwgJ3JldHJ5JztcblxuLyoqXG4gKiBSdW4gYSBmdW5jdGlvbiBpbiBwYXJhbGxlbCB3aXRoIGNhY2hlZCBvdXRwdXRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcmFsbGVsU2hlbGw8QT4oXG4gIGlucHV0czogQVtdLFxuICBibG9jazogKHg6IEEsIG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBzd2FsbG93RXJyb3I/OiAoeDogQSwgb3V0cHV0OiBzdHJpbmcpID0+IEVycm9yUmVzcG9uc2UsXG4pIHtcbiAgLy8gTGltaXQgdG8gMTAgZm9yIG5vdywgdG9vIG1hbnkgaW5zdGFuY2VzIG9mIE1hdmVuIGV4aGF1c3QgdGhlIENvZGVCdWlsZCBpbnN0YW5jZSBtZW1vcnlcbiAgY29uc3QgcSA9IG5ldyBQUXVldWUoeyBjb25jdXJyZW5jeTogTnVtYmVyKHByb2Nlc3MuZW52LkNPTkNVUlJFTkNZKSB8fCAxMCB9KTtcbiAgYXdhaXQgcS5hZGRBbGwoaW5wdXRzLm1hcChpbnB1dCA9PiBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGF0dGVtcHRzID0gMTA7XG4gICAgbGV0IHNsZWVwTXMgPSA1MDA7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IG5ldyBNZW1vcnlTdHJlYW0oKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJsb2NrKGlucHV0LCBvdXRwdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN3aXRjaCAoc3dhbGxvd0Vycm9yPy4oaW5wdXQsIG91dHB1dC50b1N0cmluZygpKSkge1xuICAgICAgICAgIGNhc2UgJ3NraXAnOlxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgY2FzZSAncmV0cnknOlxuICAgICAgICAgICAgaWYgKC0tYXR0ZW1wdHMgPiAwKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHNsZWVwKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHNsZWVwTXMpKTtcbiAgICAgICAgICAgICAgc2xlZXBNcyAqPSAyO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnZmFpbCc6XG4gICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3Iob3V0cHV0LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xuXG4gIGF3YWl0IHEub25FbXB0eSgpO1xufSJdfQ==