UNPKG

@auto-it/maven

Version:

Maven publishing plugin for auto

67 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updatePoms = exports.updatePomFile = exports.updatePomVersion = void 0; const tslib_1 = require("tslib"); const core_1 = require("@auto-it/core"); const glob = tslib_1.__importStar(require("fast-glob")); const fs = tslib_1.__importStar(require("fs")); const jsdom = tslib_1.__importStar(require("jsdom")); const prettier = tslib_1.__importStar(require("prettier")); const index_1 = require("./index"); /** Update the version in the pom.xml file **/ async function updatePomVersion(content, version, options) { const dom = new jsdom.JSDOM(content, { contentType: "text/xml" }); const pomDom = dom.window.document; const versionNode = pomDom.evaluate("/project/version", pomDom.documentElement, pomDom.createNSResolver(pomDom.documentElement), 9 // XPathResult.FIRST_ORDERED_NODE_TYPE ); if (versionNode === null || versionNode === void 0 ? void 0 : versionNode.singleNodeValue) { versionNode.singleNodeValue.textContent = version; } const parentVersionNode = pomDom.evaluate("/project/parent/version", pomDom.documentElement, pomDom.createNSResolver(pomDom.documentElement), 9 // XPathResult.FIRST_ORDERED_NODE_TYPE ); if (parentVersionNode === null || parentVersionNode === void 0 ? void 0 : parentVersionNode.singleNodeValue) { parentVersionNode.singleNodeValue.textContent = version; } return prettier.format(dom.serialize(), { printWidth: options.printWidth, tabWidth: options.tabWidth, parser: "html", }); } exports.updatePomVersion = updatePomVersion; /** Update the pom.xml file with the new version **/ async function updatePomFile(pomFile, version, options, auto) { auto.logger.verbose.info(`Updating: ${pomFile}`); const pom = await index_1.getPom(pomFile); const content = await updatePomVersion(pom.pomXml, version, options); fs.writeFile(pomFile, content, { encoding: "utf8" }, (err) => { if (err) throw err; }); } exports.updatePomFile = updatePomFile; /** Find and update all pom.xml files with new versions, and then commit the changes **/ async function updatePoms(version, options, auto) { auto.logger.verbose.info("Using the auto maven plugin"); /** Get all the poms and update their versions **/ const pomFiles = glob.sync("**/pom.xml"); if (pomFiles && pomFiles.length > 0) { try { await Promise.all(pomFiles.map((pomFile) => updatePomFile(pomFile, version, options, auto))); } catch (error) { auto.logger.verbose.error(`There was an error modifying the pom files. Running 'git checkout -- .' to reset the clone.`); await core_1.execPromise("git", ["checkout", "--", "."]); throw error; } auto.logger.verbose.info(`Updated ${pomFiles.length} pom.xml files with version: ${version}`); await core_1.execPromise("git", [ "commit", "-am", `"update version: ${version} [skip ci]"`, "--no-verify", ]); } } exports.updatePoms = updatePoms; //# sourceMappingURL=native-version-update.js.map