@atomist/atomist-sdm
Version:
Atomist SDM to deliver our own projects
70 lines • 3.93 kB
JavaScript
;
/*
* 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) {
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) : new P(function (resolve) { resolve(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_pack_docker_1 = require("@atomist/sdm-pack-docker");
const sdm_pack_spring_1 = require("@atomist/sdm-pack-spring");
const goals_1 = require("./goals");
const release_1 = require("./release");
const MavenDefaultOptions = {
pushTest: sdm_pack_spring_1.IsMaven,
logInterpreter: sdm_1.LogSuppressor,
};
/**
* Add Maven implementations of goals to SDM.
*
* @param sdm Software Delivery machine to modify
* @return modified software delivery machine
*/
function addMavenSupport(sdm) {
goals_1.build.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-package", builder: sdm_pack_spring_1.mavenBuilder([{ name: "skip.npm" }, { name: "skip.webpack" }]) }));
goals_1.version.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-versioner", versioner: sdm_pack_spring_1.MavenProjectVersioner }));
goals_1.dockerBuild.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-docker-build", imageNameCreator: sdm_pack_docker_1.DefaultDockerImageNameCreator, options: Object.assign({}, sdm.configuration.sdm.docker.hub, { push: true, builder: "docker" }) }))
.withProjectListener(sdm_pack_spring_1.MvnVersion)
.withProjectListener(sdm_pack_spring_1.MvnPackage);
goals_1.releaseVersion.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-release-version", goalExecutor: release_1.executeReleaseVersion(sdm_pack_spring_1.MavenProjectIdentifier, mvnIncrementPatch) }));
goals_1.publish.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-publish", goalExecutor: goals_1.noOpGoalExecutor }));
goals_1.releaseDocs.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-docs-release", goalExecutor: goals_1.noOpGoalExecutor }));
// No need to release npm for a Maven project. Maybe make this a more generic goal.
goals_1.release.with(Object.assign({}, MavenDefaultOptions, { name: "mvn-release", goalExecutor: goals_1.noOpGoalExecutor }));
return sdm;
}
exports.addMavenSupport = addMavenSupport;
/**
* Increment the patch version of a JVM project managed by Maven.
*/
function mvnIncrementPatch(p, log) {
return __awaiter(this, void 0, void 0, function* () {
const args = [
"build-helper:parse-version",
"versions:set",
// tslint:disable-next-line:max-line-length
"-DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-\${parsedVersion.qualifier}",
"versions:commit",
];
return sdm_1.spawnLog("./mvnw", args, { cwd: p.baseDir, log });
});
}
//# sourceMappingURL=mavenSupport.js.map