UNPKG

@jwpkg/gitversion

Version:

Gitversion is a complete customizable git-based release management system

134 lines 11.5 kB
"use strict"; 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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