@jwpkg/gitversion
Version:
Gitversion is a complete customizable git-based release management system
134 lines • 11.4 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;
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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