UNPKG

coolant

Version:

The modular build radiator

55 lines (54 loc) 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var Time_1 = require("./Time"); var ObjectMap_1 = require("../util/ObjectMap"); var model_1 = require("../model"); exports.onNewBuild = function (provider, action, updateIntervalSeconds) { Time_1.periodicallyWithState(function (priorRetrievedBuild) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var builds, nonRunningBuilds; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, provider()]; case 1: builds = _a.sent(); nonRunningBuilds = builds.filter(function (build) { return build.status !== model_1.BuildStatus.Running; }); nonRunningBuilds .filter(function (build) { return build.status !== model_1.BuildStatus.Running; }) .map(function (build) { return ({ currentBuild: build, priorBuild: priorRetrievedBuild[build.id] }); }) .filter(function (_a) { var priorBuild = _a.priorBuild; return priorBuild !== undefined; }) .filter(function (_a) { var currentBuild = _a.currentBuild, priorBuild = _a.priorBuild; var _b; return ((_b = priorBuild) === null || _b === void 0 ? void 0 : _b.number) !== currentBuild.number; }) .forEach(function (_a) { var currentBuild = _a.currentBuild, priorBuild = _a.priorBuild; return action(priorBuild, currentBuild); }); return [2 /*return*/, tslib_1.__assign(tslib_1.__assign({}, priorRetrievedBuild), ObjectMap_1.toObjectMap(nonRunningBuilds, function (build) { return build.id; }))]; } }); }); }, {}, updateIntervalSeconds); }; exports.buildPassed = function (currentBuild) { return currentBuild.status === model_1.BuildStatus.Passed; }; exports.buildNowPassing = function (priorBuild, currentBuild) { return priorBuild.status === model_1.BuildStatus.Failed && currentBuild.status === model_1.BuildStatus.Passed; }; exports.buildStillPassing = function (priorBuild, currentBuild) { return priorBuild.status === model_1.BuildStatus.Passed && currentBuild.status === model_1.BuildStatus.Passed; }; exports.buildFailed = function (currentBuild) { return currentBuild.status === model_1.BuildStatus.Failed; }; exports.buildNowFailing = function (priorBuild, currentBuild) { return priorBuild.status === model_1.BuildStatus.Passed && currentBuild.status === model_1.BuildStatus.Failed; }; exports.buildStillFailing = function (priorBuild, currentBuild) { return priorBuild.status === model_1.BuildStatus.Failed && currentBuild.status === model_1.BuildStatus.Failed; };