UNPKG

git-release-manager

Version:

A tool to generate release notes from git commit history

70 lines 3.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.incrementVersion = void 0; const semver_1 = __importDefault(require("semver")); const incrementVersion = (version, type, options = {}) => { const { prefix, build, channel, prerelease, channelNumber } = options; let versionWithoutPrefix = removePrefixAndBuild(version, prefix); if (!semver_1.default.valid(versionWithoutPrefix)) { throw new Error(`Invalid version format: ${version}`); } let newVersion = type ? incrementVersionCore(versionWithoutPrefix, type) : versionWithoutPrefix; if (channel || prerelease) { // Clear any existing prerelease if type is specified (since it means a new increment) if (type) { newVersion = clearPrerelease(newVersion); } newVersion = addPrereleaseOrChannel(newVersion, versionWithoutPrefix, options); } if (build) { newVersion = `${newVersion}+${build}`; } return finalizeVersion(newVersion, prefix); }; exports.incrementVersion = incrementVersion; const incrementVersionCore = (version, type) => { var _a; return (_a = semver_1.default.inc(version, type)) !== null && _a !== void 0 ? _a : version; }; const removePrefixAndBuild = (version, prefix) => { let baseVersion = prefix ? version.replace(prefix, '') : version; return baseVersion.split('+')[0]; }; const addPrereleaseOrChannel = (baseVersion, versionWithoutPrefix, options) => { const { channel, channelNumber, prerelease } = options; if (prerelease) { // For prerelease, append without a numerical suffix // If there's an existing prerelease, return it as it is if (semver_1.default.prerelease(baseVersion)) { return baseVersion; } return `${baseVersion}-${prerelease}`; } if (channel) { const currentPrerelease = semver_1.default.prerelease(baseVersion); const isExistingChannel = currentPrerelease && currentPrerelease[0] === channel; if (isExistingChannel && channelNumber) { const currentNumber = parseInt(currentPrerelease[1], 10) || 0; return `${baseVersion.split('-')[0]}-${channel}.${currentNumber + 1}`; } if (!channelNumber) { // If there is no -channel suffix or channelNumber is false, append channel without number return `${baseVersion.split('-')[0]}-${channel}`; } else { // If no existing channel, and channelNumber is true, start numbering from .1 return `${baseVersion.split('-')[0]}-${channel}.1`; } } return baseVersion; }; const clearPrerelease = (version) => { return version.split('-')[0]; }; const finalizeVersion = (version, prefix) => { return prefix ? `${prefix}${version}` : version; }; //# sourceMappingURL=versionFormatter.js.map