@atomist/sdm
Version:
Atomist Software Delivery Machine SDK
94 lines • 3.28 kB
JavaScript
;
/*
* 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