UNPKG

@atomist/sdm

Version:

Atomist Software Delivery Machine SDK

94 lines 3.28 kB
"use strict"; /* * Copyright © 2020 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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.getClusterLabel = exports.getCluster = void 0; const environment_1 = require("../../../api/goal/support/environment"); /** * Determine cluster name from goal environment and fulfillment. If * the fulfillment is provided, the cluster name is parsed from the * goal fulfillment name, stripping any NPM scope and everything * before the first underscore, `_`, if they exist. * * If there is no fulfillment, the cluster name derived from the goal * environment. An environment of `StagingEnvironment` or * `ProductionEnvironment` is mapped to an appropriate string. Any * other goal environment is simplified to the name of the * environment. If the environment is not truthy an empty string is * returned. Otherwise the `environment` string is returned * unchanged. * * @param environment FulfillableGoalDetails.environment * @param fulfillment GoalFulfillment.name * @return cluster name */ function getCluster(environment, fulfillment) { if (fulfillment && environment) { return cleanFulfillment(fulfillment) + " " + envString(environment); } else if (fulfillment) { return cleanFulfillment(fulfillment); } else if (environment) { return envString(environment); } else { return ""; } } exports.getCluster = getCluster; /** * Generate the tail of a goal label using [[getCluster]] to determine * an appropriate deployment target. * * @param environment FulfillableGoalDetails.environment * @param fulfillment GoalFulfillment.name * @return Formatted phrase including cluster name */ function getClusterLabel(environment, fulfillment) { const cluster = getCluster(environment, fulfillment); if (cluster === "code") { return " independent of environment"; } else if (cluster) { return ` to \`${cluster}\``; } else { return ""; } } exports.getClusterLabel = getClusterLabel; function cleanFulfillment(fulfillment) { return fulfillment.replace(/^@.*?\//, "").replace(/^.*?_/, ""); } function envString(environment) { const geRegExp = /^\d+-(\w+)\/$/; // GoalEnvironments are strings, so check if string matches pattern if (geRegExp.test(environment)) { switch (environment) { case environment_1.StagingEnvironment: return "testing"; case environment_1.ProductionEnvironment: return "production"; default: return environment.replace(geRegExp, "$1"); } } else { return environment; } } //# sourceMappingURL=cluster.js.map