@auto-it/maven
Version:
Maven publishing plugin for auto
67 lines • 3.19 kB
JavaScript
;
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