@jwpkg/gitversion
Version:
Gitversion is a complete customizable git-based release management system
134 lines • 11.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BumpType = void 0;
exports.executeBump = executeBump;
exports.detectBumpType = detectBumpType;
exports.validateBumpType = validateBumpType;
const colorize_node_1 = require("colorize-node");
const semver_1 = require("semver");
const configuration_1 = require("./configuration");
class BumpType {
precedence;
explicitVersion;
static SKIP = new BumpType(100);
static NONE = new BumpType(0);
static PATCH = new BumpType(1);
static MINOR = new BumpType(2);
static MAJOR = new BumpType(3);
static GRADUATE = new BumpType(4);
static explicit(version) {
return new BumpType(10, version);
}
static parse(bumpTypeName) {
switch (bumpTypeName.toLowerCase()) {
case 'major': return BumpType.MAJOR;
case 'minor': return BumpType.MINOR;
case 'patch': return BumpType.PATCH;
case 'graduate': return BumpType.GRADUATE;
case 'none': return BumpType.NONE;
case 'skip': return BumpType.SKIP;
}
if ((0, semver_1.parse)(bumpTypeName)) {
return BumpType.explicit(bumpTypeName);
}
return BumpType.NONE;
}
static tryParse(bumpTypeName) {
if (bumpTypeName) {
return this.parse(bumpTypeName);
}
return undefined;
}
toString() {
switch (this) {
case BumpType.MAJOR: return 'major';
case BumpType.MINOR: return 'major';
case BumpType.PATCH: return 'major';
case BumpType.GRADUATE: return 'major';
case BumpType.NONE: return 'none';
case BumpType.SKIP: return 'skip';
}
if (this.explicitVersion) {
return this.explicitVersion;
}
return 'none';
}
gt(compare) {
return this.precedence > compare.precedence;
}
constructor(precedence, explicitVersion) {
this.precedence = precedence;
this.explicitVersion = explicitVersion;
}
}
exports.BumpType = BumpType;
const bumpMap = {
fix: BumpType.PATCH,
feat: BumpType.MINOR,
feature: BumpType.MINOR,
revert: BumpType.PATCH,
perf: BumpType.PATCH,
performance: BumpType.PATCH,
chore: BumpType.PATCH,
docs: BumpType.PATCH,
};
function executeBump(version, branch, bumpType) {
if (bumpType === BumpType.NONE) {
return null;
}
const semver = (0, semver_1.parse)(version);
if (!semver) {
return null;
}
if ((0, semver_1.prerelease)(semver)) {
return (0, semver_1.inc)(version, 'prerelease');
}
const preReleaseName = branch.type === configuration_1.BranchType.MAIN ? undefined : branch.name.replace(/[^0-9A-Za-z-]/g, '-');
const preReleasePrefix = branch.type === configuration_1.BranchType.MAIN ? '' : 'pre';
if (semver.major === 0) {
switch (bumpType) {
case BumpType.GRADUATE: return (0, semver_1.inc)(version, `${preReleasePrefix}major`, preReleaseName);
case BumpType.MAJOR: return (0, semver_1.inc)(version, `${preReleasePrefix}minor`, preReleaseName);
default: return (0, semver_1.inc)(version, `${preReleasePrefix}patch`, preReleaseName);
}
}
else {
switch (bumpType) {
case BumpType.GRADUATE: return (0, semver_1.inc)(version, `${preReleasePrefix}major`, preReleaseName);
case BumpType.MAJOR: return (0, semver_1.inc)(version, `${preReleasePrefix}major`, preReleaseName);
case BumpType.MINOR: return (0, semver_1.inc)(version, `${preReleasePrefix}minor`, preReleaseName);
case BumpType.PATCH: return (0, semver_1.inc)(version, `${preReleasePrefix}patch`, preReleaseName);
}
}
return null;
}
function detectBumpType(commits) {
let current = BumpType.NONE;
for (const commit of commits) {
if (commit.breaking) {
return BumpType.MAJOR;
}
const detected = bumpMap[commit.type];
if (detected && detected.gt(current)) {
current = detected;
}
}
return current;
}
function validateBumpType(bumpType, rawCommits, configuration, branch, logger) {
if (branch.type === configuration_1.BranchType.FEATURE) {
switch (configuration.options.featureBumpBehavior) {
case 'never':
logger?.reportInfo(`On feature branch with featureBumpBehavior: Never. Forcing bumptype to ${colorize_node_1.colorize.greenBright('NONE')} `);
return BumpType.NONE;
case 'normal': return bumpType;
}
// all commits
if (bumpType === BumpType.NONE && rawCommits.length > 0) {
logger?.reportInfo(`Found ${colorize_node_1.colorize.cyan(rawCommits.length)} normal commits and will bump feature branch with ${colorize_node_1.colorize.greenBright('PATCH')}`);
return BumpType.PATCH;
}
}
return bumpType;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2J1bXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0ZBLGtDQWlDQztBQUdELHdDQWFDO0FBRUQsNENBZ0JDO0FBdkpELGlEQUF5QztBQUN6QyxtQ0FBZ0Q7QUFFaEQsbURBQTRFO0FBTTVFLE1BQWEsUUFBUTtJQUNYLFVBQVUsQ0FBUztJQUNYLGVBQWUsQ0FBVTtJQUV6QyxNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsTUFBTSxDQUFVLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBVSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQWU7UUFDN0IsT0FBTyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBb0I7UUFDL0IsUUFBUSxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNw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