UNPKG

@atomist/sdm-pack-spring

Version:

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

161 lines 6.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 sdm_1 = require("@atomist/sdm"); const sdm_core_1 = require("@atomist/sdm-core"); const propertiesParser_1 = require("../../properties/propertiesParser"); const GradleProgressReporter_1 = require("../GradleProgressReporter"); const buildGradleParser_1 = require("../parse/buildGradleParser"); const gradlePushTests_1 = require("../pushtest/gradlePushTests"); const gradleBuilder_1 = require("./gradleBuilder"); function newVersion(sdmGoal, p) { return __awaiter(this, void 0, void 0, function* () { const pi = yield buildGradleParser_1.GradleProjectIdentifier(p); const branch = sdmGoal.branch.split("/").join("."); return `${pi.version}-${branch}.${sdm_1.formatDate()}`; }); } /** * ProjectVersioner to be used with Gradle projects * @param sdmGoal * @param p * @param log * @constructor */ exports.GradleProjectVersioner = (sdmGoal, p, log) => __awaiter(void 0, void 0, void 0, function* () { const version = yield newVersion(sdmGoal, p); yield changeGradleVersion(version, p); return version; }); /** * PrepareForGoalExecution for updating the Maven version in project * @param p * @param goalInvocation * @constructor */ exports.GradleVersionPreparation = (p, goalInvocation) => __awaiter(void 0, void 0, void 0, function* () { const version = yield newVersion(goalInvocation.goalEvent, p); return changeGradleVersion(version, p); }); function tryChangingInGradlePropertiesFile(p, version) { return __awaiter(this, void 0, void 0, function* () { if (p.hasFile("gradle.properties")) { const propertiesFile = yield propertiesParser_1.parseProperties(p, "gradle.properties"); const versionProperty = propertiesFile.properties.find(prop => prop.key === "version"); if (versionProperty) { versionProperty.value = version; yield propertiesFile.flush(); } } }); } function tryChangingInBuildGradleFile(p, version) { return __awaiter(this, void 0, void 0, function* () { const gradleBuildFile = yield p.getFile("build.gradle"); if (gradleBuildFile) { const gradleBuild = yield (gradleBuildFile).getContent(); const versionRegex = /^version[ ]?=[ ]?["'][0-9.\-_A-Za-z]*['"]$/; yield gradleBuildFile.setContent(gradleBuild.replace(versionRegex, `version = '${version}'`)); } }); } function tryChangingInBuildGradleKtsFile(p, version) { return __awaiter(this, void 0, void 0, function* () { const gradleBuildFile = yield p.getFile("build.gradle.kts"); if (gradleBuildFile) { const gradleBuild = yield (gradleBuildFile).getContent(); const versionRegex = /^version[ ]?=[ ]?["'][0-9.\-_A-Za-z]*['"]$/; yield gradleBuildFile.setContent(gradleBuild.replace(versionRegex, `version = '${version}'`)); } }); } function changeGradleVersion(version, p) { return __awaiter(this, void 0, void 0, function* () { yield tryChangingInGradlePropertiesFile(p, version); yield tryChangingInBuildGradleFile(p, version); yield tryChangingInBuildGradleKtsFile(p, version); return { code: 0, }; }); } /** * PrepareForGoalExecution for running Gradle build * @param p * @param goalInvocation * @constructor */ exports.GradleCompilePreparation = gradleBuildPreparation([{ name: "skipTests", value: "true", }]); /** * Constructs a PrepareForGoalExecution taking additional command line args * @param args */ function gradleBuildPreparation(args = []) { return (p, goalInvocation) => __awaiter(this, void 0, void 0, function* () { return gradleBuilder_1.gradleCommand(p, { tasks: ["build"], progressLog: goalInvocation.progressLog, args, errorFinder: sdm_1.SuccessIsReturn0ErrorFinder }); }); } exports.gradleBuildPreparation = gradleBuildPreparation; function gradleVersionProjectListener(p, gi, event) { return __awaiter(this, void 0, void 0, function* () { const v = yield sdm_core_1.readSdmVersion(gi.goalEvent.repo.owner, gi.goalEvent.repo.name, gi.goalEvent.repo.providerId, gi.goalEvent.sha, gi.goalEvent.branch, gi.context); return changeGradleVersion(v, p); }); } exports.GradleVersion = { name: "gradle version", listener: gradleVersionProjectListener, pushTest: gradlePushTests_1.IsGradle, events: [sdm_1.GoalProjectListenerEvent.before], }; function gradleBuildProjectListener(p, gi) { return gradleBuilder_1.gradleCommand(p, { progressLog: gi.progressLog, tasks: ["build"], args: [{ name: "artifact.name", value: p.id.repo }], errorFinder: sdm_1.SuccessIsReturn0ErrorFinder, }); } exports.GradleBuild = { name: "gradle build", listener: gradleBuildProjectListener, pushTest: gradlePushTests_1.IsGradle, events: [sdm_1.GoalProjectListenerEvent.before], }; exports.GradleDefaultOptions = { pushTest: gradlePushTests_1.IsGradle, logInterpreter: sdm_1.LogSuppressor, progressReporter: GradleProgressReporter_1.GradleProgressReporter, }; //# sourceMappingURL=helpers.js.map