UNPKG

@atomist/sdm-pack-spring

Version:

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

106 lines 6.31 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 JavaProjectCreationParameters_1 = require("../../java/generate/JavaProjectCreationParameters"); const XmldocFileParser_1 = require("../../xml/XmldocFileParser"); /** * Record change to POM. Project will subsequently need flushing * * @param {Project} project * @param name desired name * @param {string} artifactId * @param {string} groupId * @param {string} version * @param {string} description * @return project promise, project will need to be flushed */ function updatePom(project, name, artifactId, groupId, version, description, multiModuleArgs) { return __awaiter(this, void 0, void 0, function* () { const pomProjects = yield automation_client_1.astUtils.findFileMatches(project, new XmldocFileParser_1.XmldocFileParser(), "**/pom.xml", "/project"); // , m => { for (const pomProject of pomProjects) { const m = pomProject.matches[0]; const parentElement = m.$children.find(n => n.$name === "parent"); const pomGroupId = m.$children.find(n => n.$name === "groupId"); const pomArtifactId = m.$children.find(n => n.$name === "artifactId"); const pomVersion = m.$children.find(n => n.$name === "artifactId"); if (parentElement) { const parentGroupId = parentElement.$children.find(n => n.$name === "groupId"); const parentArtifactId = parentElement.$children.find(n => n.$name === "artifactId"); if (pomGroupId) { if (pomGroupId.$value === parentGroupId.$value) { yield updateNode(project, pomProject.file.path, "/project/parent/groupId", `<groupId>${groupId}</groupId>`); yield updateNode(project, pomProject.file.path, "/project/parent/version", `<version>${version}</version>`); if (multiModuleArgs.artifactPrefix) { yield updateNode(project, pomProject.file.path, "/project/parent/artifactId", parentArtifactId.$value.replace(new RegExp(multiModuleArgs.artifactPrefix + "-(.*)"), `${artifactId}-$1`)); } } } else { yield updateNode(project, pomProject.file.path, "/project/parent/groupId", `<groupId>${groupId}</groupId>`); yield updateNode(project, pomProject.file.path, "/project/parent/version", `<version>${version}</version>`); if (multiModuleArgs.artifactPrefix) { yield updateNode(project, pomProject.file.path, "/project/parent/artifactId", parentArtifactId.$value.replace(new RegExp(multiModuleArgs.artifactPrefix + "-(.*)"), `${artifactId}-$1`)); } } } yield updateNode(project, pomProject.file.path, "/project/groupId", `<groupId>${groupId}</groupId>`); if (!!multiModuleArgs) { yield updateNode(project, pomProject.file.path, "/project/artifactId", pomArtifactId.$value.replace(new RegExp(multiModuleArgs.artifactPrefix + "-(.*)"), `${artifactId}-$1`)); } else { yield updateNode(project, pomProject.file.path, "/project/artifactId", `<artifactId>${artifactId}</artifactId>`); } if (!!pomVersion) { yield updateNode(project, pomProject.file.path, "/project/version", `<version>${version}</version>`); } if (!(!!multiModuleArgs)) { yield updateNode(project, pomProject.file.path, "/project/description", `<description>${description}</description>`); yield updateNode(project, pomProject.file.path, "/project/name", `<name>${name}</name>`); } } return project; }); } exports.updatePom = updatePom; function updateNode(project, f, path, value) { return __awaiter(this, void 0, void 0, function* () { yield automation_client_1.astUtils.doWithAllMatches(project, new XmldocFileParser_1.XmldocFileParser(), f, path, m => { m.$value = value; }); }); } exports.updateNode = updateNode; exports.updatePomTransform = (project, c, params) => __awaiter(void 0, void 0, void 0, function* () { return updatePom(project, project.id.repo, JavaProjectCreationParameters_1.computeArtifactId(params, project), params.groupId, params.version, params.description || project.id.repo); }); function updateMultiModulePomTransform(artifactPrefix) { return (project, c, params) => __awaiter(this, void 0, void 0, function* () { return updatePom(project, project.id.repo, JavaProjectCreationParameters_1.computeArtifactId(params, project), params.groupId, params.version, params.description || project.id.repo, { artifactPrefix }); }); } exports.updateMultiModulePomTransform = updateMultiModulePomTransform; //# sourceMappingURL=updatePom.js.map