coolant
Version:
The modular build radiator
55 lines (54 loc) • 3.02 kB
JavaScript
;
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;
};