UNPKG

@atomist/sdm-pack-aspect

Version:

an Atomist SDM Extension Pack for visualizing drift across an organization

73 lines 3.58 kB
"use strict"; /* * Copyright © 2019 Atomist, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const automation_client_1 = require("@atomist/automation-client"); const sdm_pack_fingerprint_1 = require("@atomist/sdm-pack-fingerprint"); const bands_1 = require("../../util/bands"); const goalListener_1 = require("./support/goalListener"); /** * Create an SDM BuildListener from BuildAspect */ function buildOutcomeAspect(opts) { return Object.assign(Object.assign({}, opts), { extract: () => __awaiter(this, void 0, void 0, function* () { return []; }), canRegister: (sdm, goals) => !!goals.build, register: (sdm, goals, publisher) => { if (!goals.build) { throw new Error("No build goal supplied. Cannot register a build aspect"); } automation_client_1.logger.info("Registering build outcome aspect '%s'", opts.name); return goals.build.withExecutionListener(goalListener_1.goalExecutionFingerprinter(opts.fingerprintFinder, publisher, [opts])); }, stats: { basicStatsPath: "elapsedMillis", defaultStatStatus: { entropy: false, }, } }); } exports.buildOutcomeAspect = buildOutcomeAspect; exports.BuildTimeType = "build-time"; /** * Capture build time */ function buildTimeAspect(opts = {}) { return buildOutcomeAspect(Object.assign(Object.assign({}, opts), { name: exports.BuildTimeType, displayName: "Build time", fingerprintFinder: (gei) => __awaiter(this, void 0, void 0, function* () { const elapsedMillis = Date.now() - gei.goalEvent.ts; const data = { elapsedMillis }; return sdm_pack_fingerprint_1.fingerprintOf({ type: exports.BuildTimeType, data, }); }), toDisplayableFingerprintName: () => "Build time", toDisplayableFingerprint: fp => { const seconds = fp.data.elapsedMillis / 1000; return bands_1.bandFor({ blistering: { upTo: 10 }, fast: { upTo: 60 }, ok: { upTo: 180 }, slow: { upTo: 600 }, interminable: bands_1.Default, }, seconds, { includeNumber: true }); } })); } exports.buildTimeAspect = buildTimeAspect; //# sourceMappingURL=BuildAspect.js.map