UNPKG

simple-git

Version:

Simple GIT interface for node.js

64 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const git_logger_1 = require("../git-logger"); const api_1 = require("../api"); class TasksPendingQueue { constructor(logLabel = 'GitExecutor') { this.logLabel = logLabel; this._queue = new Map(); } withProgress(task) { return this._queue.get(task); } createProgress(task) { const name = TasksPendingQueue.getName(task.commands[0]); const logger = git_logger_1.createLogger(this.logLabel, name); return { task, logger, name, }; } push(task) { const progress = this.createProgress(task); progress.logger('Adding task to the queue, commands = %o', task.commands); this._queue.set(task, progress); return progress; } fatal(err) { for (const [task, { logger }] of Array.from(this._queue.entries())) { if (task === err.task) { logger.info(`Failed %o`, err); logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`); } else { logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message); } this.complete(task); } if (this._queue.size !== 0) { throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`); } } complete(task) { const progress = this.withProgress(task); if (progress) { progress.logger.destroy(); this._queue.delete(task); } } attempt(task) { const progress = this.withProgress(task); if (!progress) { throw new api_1.GitError(undefined, 'TasksPendingQueue: attempt called for an unknown task'); } progress.logger('Starting task'); return progress; } static getName(name = 'empty') { return `task:${name}:${++TasksPendingQueue.counter}`; } } exports.TasksPendingQueue = TasksPendingQueue; TasksPendingQueue.counter = 0; //# sourceMappingURL=tasks-pending-queue.js.map