UNPKG

@atomist/sdm-pack-spring

Version:

Atomist software delivery machine extension pack for Spring and Spring Boot applications

86 lines 4.12 kB
"use strict"; /* * Copyright © 2018 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 _ = require("lodash"); const formatUtils_1 = require("../../util/formatUtils"); const XmldocFileParser_1 = require("../../xml/XmldocFileParser"); const fromPom_1 = require("../parse/fromPom"); /** * Add the given dependency to projects. It's not an error * if the project doesn't have a POM. The transform will do nothing * in this case. * @param {VersionedArtifact} va * @return {SimpleProjectEditor} */ function addDependencyTransform(va) { return (p) => __awaiter(this, void 0, void 0, function* () { if (yield p.hasFile("pom.xml")) { const deps = yield fromPom_1.findDeclaredDependencies(p); if (deps.dependencies.length === 0) { throw new Error("No dependencies in POM: Cannot add starter"); } if (deps.dependencies.some(dep => dep.artifact === va.artifact && dep.group === va.group)) { automation_client_1.logger.info("Dependency [%s] already present. Nothing to do", va.artifact); } else { automation_client_1.logger.info("Adding dependency [%s]", va.artifact); // Add after last dependency const lastDep = _.last(deps.dependencies); yield automation_client_1.astUtils.doWithAllMatches(p, new XmldocFileParser_1.XmldocFileParser(), "pom.xml", `//project/dependencies/dependency[/artifactId[@innerValue='${lastDep.artifact}']]`, m => { m.append("\n" + formatUtils_1.indent(dependencyStanza(va), " ", 2)); }); } } }); } exports.addDependencyTransform = addDependencyTransform; /** * Command to add a Maven dependency to the project */ exports.AddMavenDependency = { name: "add-maven-dependency", intent: ["add dependency", "add Maven dependency"], description: "Add a Maven dependency to the project", parameters: { artifact: { description: "Artifact to add" }, group: { description: "Group of the dependency" }, version: { description: "Dependency version" }, }, transform: [ (p, ci) => __awaiter(void 0, void 0, void 0, function* () { return addDependencyTransform(Object.assign({}, ci.parameters))(p, ci); }), ], transformPresentation: ci => new automation_client_1.editModes.PullRequest(`add-dependency-${ci.parameters.artifact}`, `Add dependency ${ci.parameters.artifact}`), }; function dependencyStanza(va) { return `<dependency> <groupId>${va.group}</groupId> <artifactId>${va.artifact}</artifactId>${!!va.version ? `\n<version>${va.version}</version>` : ""} </dependency>`; } //# sourceMappingURL=addDependencyTransform.js.map