This commit is contained in:
Vagharshak Baghdasaryan 2025-06-10 15:26:39 +02:00
parent 62cc2d5a6e
commit 82d95f26f4
8 changed files with 216 additions and 109 deletions

201
dist/index.js vendored
View file

@ -48,15 +48,19 @@ const cmd = (command, ...args) => __awaiter(void 0, void 0, void 0, function* ()
if (debugManager.isReplayMode()) { if (debugManager.isReplayMode()) {
return debugManager.replayCommand(command, args); return debugManager.replayCommand(command, args);
} }
let output = '', errors = ''; let output = "", errors = "";
const options = { const options = {
silent: true, silent: true,
listeners: { listeners: {
stdout: (data) => { output += data.toString(); }, stdout: (data) => {
stderr: (data) => { errors += data.toString(); }, output += data.toString();
},
stderr: (data) => {
errors += data.toString();
},
ignoreReturnCode: true, ignoreReturnCode: true,
silent: true silent: true,
} },
}; };
let caughtError = null; let caughtError = null;
try { try {
@ -81,7 +85,7 @@ exports.cmd = cmd;
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.ConfigurationProvider = void 0; exports.ConfigurationProvider = void 0;
const CsvUserFormatter_1 = __nccwpck_require__(9105); const CsvUserFormatter_1 = __nccwpck_require__(9105);
const BranchVersioningTagFormatter_1 = __nccwpck_require__(807); const BranchVersioningTagFormatter_1 = __nccwpck_require__(9894);
const DefaultTagFormatter_1 = __nccwpck_require__(4808); const DefaultTagFormatter_1 = __nccwpck_require__(4808);
const DefaultVersionFormatter_1 = __nccwpck_require__(8524); const DefaultVersionFormatter_1 = __nccwpck_require__(8524);
const JsonUserFormatter_1 = __nccwpck_require__(7892); const JsonUserFormatter_1 = __nccwpck_require__(7892);
@ -96,16 +100,24 @@ class ConfigurationProvider {
this.config = config; this.config = config;
DebugManager_1.DebugManager.getInstance().initializeConfig(config); DebugManager_1.DebugManager.getInstance().initializeConfig(config);
} }
GetCurrentCommitResolver() { return new DefaultCurrentCommitResolver_1.DefaultCurrentCommitResolver(this.config); } GetCurrentCommitResolver() {
GetLastReleaseResolver() { return new DefaultLastReleaseResolver_1.DefaultLastReleaseResolver(this.config); } return new DefaultCurrentCommitResolver_1.DefaultCurrentCommitResolver(this.config);
GetCommitsProvider() { return new DefaultCommitsProvider_1.DefaultCommitsProvider(this.config); } }
GetLastReleaseResolver() {
return new DefaultLastReleaseResolver_1.DefaultLastReleaseResolver(this.config);
}
GetCommitsProvider() {
return new DefaultCommitsProvider_1.DefaultCommitsProvider(this.config);
}
GetVersionClassifier() { GetVersionClassifier() {
if (this.config.bumpEachCommit) { if (this.config.bumpEachCommit) {
return new BumpAlwaysVersionClassifier_1.BumpAlwaysVersionClassifier(this.config); return new BumpAlwaysVersionClassifier_1.BumpAlwaysVersionClassifier(this.config);
} }
return new DefaultVersionClassifier_1.DefaultVersionClassifier(this.config); return new DefaultVersionClassifier_1.DefaultVersionClassifier(this.config);
} }
GetVersionFormatter() { return new DefaultVersionFormatter_1.DefaultVersionFormatter(this.config); } GetVersionFormatter() {
return new DefaultVersionFormatter_1.DefaultVersionFormatter(this.config);
}
GetTagFormatter(branchName) { GetTagFormatter(branchName) {
if (this.config.versionFromBranch) { if (this.config.versionFromBranch) {
return new BranchVersioningTagFormatter_1.BranchVersioningTagFormatter(this.config, branchName); return new BranchVersioningTagFormatter_1.BranchVersioningTagFormatter(this.config, branchName);
@ -114,8 +126,10 @@ class ConfigurationProvider {
} }
GetUserFormatter() { GetUserFormatter() {
switch (this.config.userFormatType) { switch (this.config.userFormatType) {
case 'json': return new JsonUserFormatter_1.JsonUserFormatter(this.config); case "json":
case 'csv': return new CsvUserFormatter_1.CsvUserFormatter(this.config); return new JsonUserFormatter_1.JsonUserFormatter(this.config);
case "csv":
return new CsvUserFormatter_1.CsvUserFormatter(this.config);
default: default:
throw new Error(`Unknown user format type: ${this.config.userFormatType}, supported types: json, csv`); throw new Error(`Unknown user format type: ${this.config.userFormatType}, supported types: json, csv`);
} }
@ -173,7 +187,6 @@ class DebugManager {
this.replayMode = false; this.replayMode = false;
this.diagnosticInfo = new DiagnosticInfo(); this.diagnosticInfo = new DiagnosticInfo();
} }
;
/** Enables replay mode and loads the diagnostic information from the specified string */ /** Enables replay mode and loads the diagnostic information from the specified string */
replayFromDiagnostics(diagnostics) { replayFromDiagnostics(diagnostics) {
this.debugEnabled = false; this.debugEnabled = false;
@ -182,7 +195,7 @@ class DebugManager {
} }
/** Returns a JSON string containing the diagnostic information for this run */ /** Returns a JSON string containing the diagnostic information for this run */
getDebugOutput(emptyRepo = false) { getDebugOutput(emptyRepo = false) {
return this.isDebugEnabled() ? JSON.stringify(this.diagnosticInfo) : ''; return this.isDebugEnabled() ? JSON.stringify(this.diagnosticInfo) : "";
} }
/** Records a command and its output for diagnostic purposes */ /** Records a command and its output for diagnostic purposes */
recordCommand(command, args, output, stderr, error) { recordCommand(command, args, output, stderr, error) {
@ -194,9 +207,10 @@ class DebugManager {
/** Replays the specified command and returns the output */ /** Replays the specified command and returns the output */
replayCommand(command, args) { replayCommand(command, args) {
if (this.diagnosticInfo === null) { if (this.diagnosticInfo === null) {
throw new Error('No diagnostic information available for replay'); throw new Error("No diagnostic information available for replay");
} }
const commandResult = this.diagnosticInfo.commands.find(c => c.command === command && JSON.stringify(c.args) === JSON.stringify(args)); const commandResult = this.diagnosticInfo.commands.find((c) => c.command === command &&
JSON.stringify(c.args) === JSON.stringify(args));
if (!commandResult) { if (!commandResult) {
throw new Error(`No result found in diagnostic for command "${command}"`); throw new Error(`No result found in diagnostic for command "${command}"`);
} }
@ -287,6 +301,29 @@ exports.VersionResult = VersionResult;
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
@ -303,8 +340,10 @@ const VersionType_1 = __nccwpck_require__(895);
const UserInfo_1 = __nccwpck_require__(5907); const UserInfo_1 = __nccwpck_require__(5907);
const VersionInformation_1 = __nccwpck_require__(5686); const VersionInformation_1 = __nccwpck_require__(5686);
const DebugManager_1 = __nccwpck_require__(1823); const DebugManager_1 = __nccwpck_require__(1823);
const core = __importStar(__nccwpck_require__(2186));
function runAction(configurationProvider) { function runAction(configurationProvider) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.info("VAGO STARTING runAction");
const currentCommitResolver = configurationProvider.GetCurrentCommitResolver(); const currentCommitResolver = configurationProvider.GetCurrentCommitResolver();
const lastReleaseResolver = configurationProvider.GetLastReleaseResolver(); const lastReleaseResolver = configurationProvider.GetLastReleaseResolver();
const commitsProvider = configurationProvider.GetCommitsProvider(); const commitsProvider = configurationProvider.GetCommitsProvider();
@ -314,21 +353,34 @@ function runAction(configurationProvider) {
const userFormatter = configurationProvider.GetUserFormatter(); const userFormatter = configurationProvider.GetUserFormatter();
const debugManager = DebugManager_1.DebugManager.getInstance(); const debugManager = DebugManager_1.DebugManager.getInstance();
if (yield currentCommitResolver.IsEmptyRepoAsync()) { if (yield currentCommitResolver.IsEmptyRepoAsync()) {
core.info("VAGO REPO WAS EMPTY, returning default version information");
const versionInfo = new VersionInformation_1.VersionInformation(0, 0, 0, 0, VersionType_1.VersionType.None, [], false, false); const versionInfo = new VersionInformation_1.VersionInformation(0, 0, 0, 0, VersionType_1.VersionType.None, [], false, false);
return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format('author', []), '', '', tagFormatter.Parse(tagFormatter.Format(versionInfo)).join('.'), debugManager.getDebugOutput(true)); return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format("author", []), "", "", tagFormatter.Parse(tagFormatter.Format(versionInfo)).join("."), debugManager.getDebugOutput(true));
} }
core.info("VAGO REPO IS NOT EMPTY, continuing with versioning");
const currentCommit = yield currentCommitResolver.ResolveAsync(); const currentCommit = yield currentCommitResolver.ResolveAsync();
core.info("VAGO CURRENT COMMIT: " + currentCommit);
const lastRelease = yield lastReleaseResolver.ResolveAsync(currentCommit, tagFormatter); const lastRelease = yield lastReleaseResolver.ResolveAsync(currentCommit, tagFormatter);
core.info("VAGO LAST RELEASE: " +
lastRelease.hash +
" " +
lastRelease.major +
"." +
lastRelease.minor +
"." +
lastRelease.patch);
const commitSet = yield commitsProvider.GetCommitsAsync(lastRelease.hash, currentCommit); const commitSet = yield commitsProvider.GetCommitsAsync(lastRelease.hash, currentCommit);
core.info("VAGO commit set le:" + commitSet.commits.length);
core.info("VAGO commit set changed: " + commitSet.changed.toString());
const classification = yield versionClassifier.ClassifyAsync(lastRelease, commitSet); const classification = yield versionClassifier.ClassifyAsync(lastRelease, commitSet);
core.info("VAGO classification: " + JSON.stringify(classification));
const { isTagged } = lastRelease; const { isTagged } = lastRelease;
const { major, minor, patch, increment, type, changed } = classification; const { major, minor, patch, increment, type, changed } = classification;
// At this point all necessary data has been pulled from the database, create // At this point all necessary data has been pulled from the database, create
// version information to be used by the formatters // version information to be used by the formatters
let versionInfo = new VersionInformation_1.VersionInformation(major, minor, patch, increment, type, commitSet.commits, changed, isTagged); let versionInfo = new VersionInformation_1.VersionInformation(major, minor, patch, increment, type, commitSet.commits, changed, isTagged);
// Group all the authors together, count the number of commits per author // Group all the authors together, count the number of commits per author
const allAuthors = versionInfo.commits const allAuthors = versionInfo.commits.reduce((acc, commit) => {
.reduce((acc, commit) => {
const key = `${commit.author} <${commit.authorEmail}>`; const key = `${commit.author} <${commit.authorEmail}>`;
acc[key] = acc[key] || { n: commit.author, e: commit.authorEmail, c: 0 }; acc[key] = acc[key] || { n: commit.author, e: commit.authorEmail, c: 0 };
acc[key].c++; acc[key].c++;
@ -337,7 +389,7 @@ function runAction(configurationProvider) {
const authors = Object.values(allAuthors) const authors = Object.values(allAuthors)
.map((u) => new UserInfo_1.UserInfo(u.n, u.e, u.c)) .map((u) => new UserInfo_1.UserInfo(u.n, u.e, u.c))
.sort((a, b) => b.commits - a.commits); .sort((a, b) => b.commits - a.commits);
return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format('author', authors), currentCommit, lastRelease.hash, `${lastRelease.major}.${lastRelease.minor}.${lastRelease.patch}`, debugManager.getDebugOutput()); return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format("author", authors), currentCommit, lastRelease.hash, `${lastRelease.major}.${lastRelease.minor}.${lastRelease.patch}`, debugManager.getDebugOutput());
}); });
} }
exports.runAction = runAction; exports.runAction = runAction;
@ -345,7 +397,7 @@ exports.runAction = runAction;
/***/ }), /***/ }),
/***/ 807: /***/ 9894:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict"; "use strict";
@ -616,15 +668,15 @@ const ConfigurationProvider_1 = __nccwpck_require__(2614);
const core = __importStar(__nccwpck_require__(2186)); const core = __importStar(__nccwpck_require__(2186));
const VersionType_1 = __nccwpck_require__(895); const VersionType_1 = __nccwpck_require__(895);
function setOutput(versionResult) { function setOutput(versionResult) {
const { major, minor, patch, increment, versionType, formattedVersion, versionTag, changed, isTagged, authors, currentCommit, previousCommit, previousVersion, debugOutput } = versionResult; const { major, minor, patch, increment, versionType, formattedVersion, versionTag, changed, isTagged, authors, currentCommit, previousCommit, previousVersion, debugOutput, } = versionResult;
const repository = process.env.GITHUB_REPOSITORY; const repository = process.env.GITHUB_REPOSITORY;
if (!changed) { if (!changed) {
core.info("VAGOOO2") core.info("VAGOOO1");
core.info('No changes detected for this commit'); core.info("No changes detected for this commit");
} }
core.info(`Version is ${formattedVersion}`); core.info(`Version is ${formattedVersion}`);
if (repository !== undefined) { if (repository !== undefined) {
core.info(`To create a release for this version, go to https://github.com/${repository}/releases/new?tag=${versionTag}&target=${currentCommit.split('/').slice(-1)[0]}`); core.info(`To create a release for this version, go to https://github.com/${repository}/releases/new?tag=${versionTag}&target=${currentCommit.split("/").slice(-1)[0]}`);
} }
core.setOutput("version", formattedVersion); core.setOutput("version", formattedVersion);
core.setOutput("major", major.toString()); core.setOutput("major", major.toString());
@ -643,56 +695,59 @@ function setOutput(versionResult) {
} }
function run() { function run() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.info("VAGO Starting run action...");
function toBool(value) { function toBool(value) {
if (!value || value.toLowerCase() === 'false') { if (!value || value.toLowerCase() === "false") {
return false; return false;
} }
else if (value.toLowerCase() === 'true') { else if (value.toLowerCase() === "true") {
return true; return true;
} }
return false; return false;
} }
function toStringOrBool(value) { function toStringOrBool(value) {
if (!value || value === 'false') { if (!value || value === "false") {
return false; return false;
} }
if (value === 'true') { if (value === "true") {
return true; return true;
} }
return value; return value;
} }
const config = { const config = {
branch: core.getInput('branch'), branch: core.getInput("branch"),
tagPrefix: core.getInput('tag_prefix'), tagPrefix: core.getInput("tag_prefix"),
useBranches: toBool(core.getInput('use_branches')), useBranches: toBool(core.getInput("use_branches")),
versionFromBranch: toStringOrBool(core.getInput('version_from_branch')), versionFromBranch: toStringOrBool(core.getInput("version_from_branch")),
majorPattern: core.getInput('major_pattern'), majorPattern: core.getInput("major_pattern"),
minorPattern: core.getInput('minor_pattern'), minorPattern: core.getInput("minor_pattern"),
majorFlags: core.getInput('major_regexp_flags'), majorFlags: core.getInput("major_regexp_flags"),
minorFlags: core.getInput('minor_regexp_flags'), minorFlags: core.getInput("minor_regexp_flags"),
versionFormat: core.getInput('version_format'), versionFormat: core.getInput("version_format"),
changePath: core.getInput('change_path'), changePath: core.getInput("change_path"),
namespace: core.getInput('namespace'), namespace: core.getInput("namespace"),
bumpEachCommit: toBool(core.getInput('bump_each_commit')), bumpEachCommit: toBool(core.getInput("bump_each_commit")),
searchCommitBody: toBool(core.getInput('search_commit_body')), searchCommitBody: toBool(core.getInput("search_commit_body")),
userFormatType: core.getInput('user_format_type'), userFormatType: core.getInput("user_format_type"),
enablePrereleaseMode: toBool(core.getInput('enable_prerelease_mode')), enablePrereleaseMode: toBool(core.getInput("enable_prerelease_mode")),
bumpEachCommitPatchPattern: core.getInput('bump_each_commit_patch_pattern'), bumpEachCommitPatchPattern: core.getInput("bump_each_commit_patch_pattern"),
debug: toBool(core.getInput('debug')), debug: toBool(core.getInput("debug")),
replay: '' replay: "",
}; };
if (config.useBranches) { if (config.useBranches) {
core.warning(`The 'use_branches' input option is deprecated, please see the documentation for more information on how to use branches`); core.warning(`The 'use_branches' input option is deprecated, please see the documentation for more information on how to use branches`);
} }
if (config.versionFormat === '' && core.getInput('format') !== '') { if (config.versionFormat === "" && core.getInput("format") !== "") {
core.warning(`The 'format' input is deprecated, use 'versionFormat' instead`); core.warning(`The 'format' input is deprecated, use 'versionFormat' instead`);
config.versionFormat = core.getInput('format'); config.versionFormat = core.getInput("format");
} }
if (core.getInput('short_tags') !== '') { if (core.getInput("short_tags") !== "") {
core.warning(`The 'short_tags' input option is no longer supported`); core.warning(`The 'short_tags' input option is no longer supported`);
} }
const configurationProvider = new ConfigurationProvider_1.ConfigurationProvider(config); const configurationProvider = new ConfigurationProvider_1.ConfigurationProvider(config);
core.info("VAGO start await runAction(configurationProvider)");
const result = yield (0, action_1.runAction)(configurationProvider); const result = yield (0, action_1.runAction)(configurationProvider);
core.info("VAGO before setOutput(result)");
setOutput(result); setOutput(result);
}); });
} }
@ -1107,6 +1162,29 @@ exports.DefaultLastReleaseResolver = DefaultLastReleaseResolver;
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
@ -1120,6 +1198,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.DefaultVersionClassifier = void 0; exports.DefaultVersionClassifier = void 0;
const VersionClassification_1 = __nccwpck_require__(7457); const VersionClassification_1 = __nccwpck_require__(7457);
const VersionType_1 = __nccwpck_require__(895); const VersionType_1 = __nccwpck_require__(895);
const core = __importStar(__nccwpck_require__(2186));
class DefaultVersionClassifier { class DefaultVersionClassifier {
constructor(config) { constructor(config) {
const searchBody = config.searchCommitBody; const searchBody = config.searchCommitBody;
@ -1193,9 +1272,13 @@ class DefaultVersionClassifier {
} }
ClassifyAsync(lastRelease, commitSet) { ClassifyAsync(lastRelease, commitSet) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.info("VAGO DefaultVersionClassifier.ClassifyAsync called");
const { type, increment, changed } = this.resolveCommitType(commitSet); const { type, increment, changed } = this.resolveCommitType(commitSet);
core.info("VAGO DefaultVersionClassifier.ClassifyAsync: type: " + VersionType_1.VersionType[type] + ", increment: " + increment + ", changed: " + changed);
const { major, minor, patch } = this.getNextVersion(lastRelease, type); const { major, minor, patch } = this.getNextVersion(lastRelease, type);
core.info("VAGOO DefaultVersionClassifier.ClassifyAsync: major: " + major + ", minor: " + minor + ", patch: " + patch);
if (lastRelease.currentPatch !== null) { if (lastRelease.currentPatch !== null) {
core.info("VAGO DefaultVersionClassifier.ClassifyAsync: lastRelease.currentPatch is not null, using it to determine version classification");
// If the current commit is tagged, we must use that version. Here we check if the version we have resolved from the // If the current commit is tagged, we must use that version. Here we check if the version we have resolved from the
// previous commits is the same as the current version. If it is, we will use the increment value, otherwise we reset // previous commits is the same as the current version. If it is, we will use the increment value, otherwise we reset
// to zero. For example: // to zero. For example:
@ -1205,6 +1288,10 @@ class DefaultVersionClassifier {
// - commit 4 - v2.0.1+0 // - commit 4 - v2.0.1+0
const versionsMatch = lastRelease.currentMajor === major && lastRelease.currentMinor === minor && lastRelease.currentPatch === patch; const versionsMatch = lastRelease.currentMajor === major && lastRelease.currentMinor === minor && lastRelease.currentPatch === patch;
const currentIncrement = versionsMatch ? increment : 0; const currentIncrement = versionsMatch ? increment : 0;
core.info("VAGO DefaultVersionClassifier.ClassifyAsync: versionsMatch: " + versionsMatch + ", currentIncrement: " + currentIncrement);
core.info("VAGO DefaultVersionClassifier.ClassifyAsync: lastRelease.currentMajor: " + lastRelease.currentMajor);
core.info("VAGO DefaultVersionClassifier.ClassifyAsync: lastRelease.currentMinor: " + lastRelease.currentMinor);
core.info("VAGO DefaultVersionClassifier.ClassifyAsync: lastRelease.currentPatch: " + lastRelease.currentPatch);
return new VersionClassification_1.VersionClassification(VersionType_1.VersionType.None, currentIncrement, false, lastRelease.currentMajor, lastRelease.currentMinor, lastRelease.currentPatch); return new VersionClassification_1.VersionClassification(VersionType_1.VersionType.None, currentIncrement, false, lastRelease.currentMajor, lastRelease.currentMinor, lastRelease.currentPatch);
} }
return new VersionClassification_1.VersionClassification(type, increment, changed, major, minor, patch); return new VersionClassification_1.VersionClassification(type, increment, changed, major, minor, patch);
@ -1372,7 +1459,7 @@ var VersionType;
/***/ }), /***/ }),
/***/ 5241: /***/ 7351:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict"; "use strict";
@ -1506,7 +1593,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
const command_1 = __nccwpck_require__(5241); const command_1 = __nccwpck_require__(7351);
const file_command_1 = __nccwpck_require__(717); const file_command_1 = __nccwpck_require__(717);
const utils_1 = __nccwpck_require__(5278); const utils_1 = __nccwpck_require__(5278);
const os = __importStar(__nccwpck_require__(2037)); const os = __importStar(__nccwpck_require__(2037));
@ -2514,7 +2601,7 @@ const os = __importStar(__nccwpck_require__(2037));
const events = __importStar(__nccwpck_require__(2361)); const events = __importStar(__nccwpck_require__(2361));
const child = __importStar(__nccwpck_require__(2081)); const child = __importStar(__nccwpck_require__(2081));
const path = __importStar(__nccwpck_require__(1017)); const path = __importStar(__nccwpck_require__(1017));
const io = __importStar(__nccwpck_require__(7351)); const io = __importStar(__nccwpck_require__(7436));
const ioUtil = __importStar(__nccwpck_require__(1962)); const ioUtil = __importStar(__nccwpck_require__(1962));
const timers_1 = __nccwpck_require__(9512); const timers_1 = __nccwpck_require__(9512);
/* eslint-disable @typescript-eslint/unbound-method */ /* eslint-disable @typescript-eslint/unbound-method */
@ -4092,7 +4179,7 @@ exports.getCmdPath = getCmdPath;
/***/ }), /***/ }),
/***/ 7351: /***/ 7436:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict"; "use strict";
@ -4876,7 +4963,7 @@ exports["default"] = _default;
/***/ }), /***/ }),
/***/ 8292: /***/ 807:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict"; "use strict";
@ -4994,7 +5081,7 @@ Object.defineProperty(exports, "__esModule", ({
})); }));
exports["default"] = void 0; exports["default"] = void 0;
var _rng = _interopRequireDefault(__nccwpck_require__(8292)); var _rng = _interopRequireDefault(__nccwpck_require__(807));
var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); var _stringify = _interopRequireDefault(__nccwpck_require__(8950));
@ -5216,7 +5303,7 @@ Object.defineProperty(exports, "__esModule", ({
})); }));
exports["default"] = void 0; exports["default"] = void 0;
var _rng = _interopRequireDefault(__nccwpck_require__(8292)); var _rng = _interopRequireDefault(__nccwpck_require__(807));
var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); var _stringify = _interopRequireDefault(__nccwpck_require__(8950));

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View file

@ -21,9 +21,9 @@ class ActionConfig {
/** A string which indicates the flags used by the `minorPattern` regular expression. */ /** A string which indicates the flags used by the `minorPattern` regular expression. */
this.minorFlags = ""; this.minorFlags = "";
/** Pattern to use when formatting output version */ /** Pattern to use when formatting output version */
this.versionFormat = '${major}.${minor}.${patch}'; this.versionFormat = "${major}.${minor}.${patch}";
/** Path to check for changes. If any changes are detected in the path the 'changed' output will true. Enter multiple paths separated by spaces. */ /** Path to check for changes. If any changes are detected in the path the 'changed' output will true. Enter multiple paths separated by spaces. */
this.changePath = ''; this.changePath = "";
/** Use to create a named sub-version. This value will be appended to tags created for this version. */ /** Use to create a named sub-version. This value will be appended to tags created for this version. */
this.namespace = ""; this.namespace = "";
/** If true, every commit will be treated as a bump to the version. */ /** If true, every commit will be treated as a bump to the version. */
@ -39,7 +39,7 @@ class ActionConfig {
/** If enabled, diagnostic information will be added to the action output. */ /** If enabled, diagnostic information will be added to the action output. */
this.debug = false; this.debug = false;
/** Diagnostics to replay */ /** Diagnostics to replay */
this.replay = ''; this.replay = "";
} }
} }
exports.ActionConfig = ActionConfig; exports.ActionConfig = ActionConfig;

View file

@ -41,15 +41,19 @@ const cmd = (command, ...args) => __awaiter(void 0, void 0, void 0, function* ()
if (debugManager.isReplayMode()) { if (debugManager.isReplayMode()) {
return debugManager.replayCommand(command, args); return debugManager.replayCommand(command, args);
} }
let output = '', errors = ''; let output = "", errors = "";
const options = { const options = {
silent: true, silent: true,
listeners: { listeners: {
stdout: (data) => { output += data.toString(); }, stdout: (data) => {
stderr: (data) => { errors += data.toString(); }, output += data.toString();
},
stderr: (data) => {
errors += data.toString();
},
ignoreReturnCode: true, ignoreReturnCode: true,
silent: true silent: true,
} },
}; };
let caughtError = null; let caughtError = null;
try { try {

View file

@ -17,16 +17,24 @@ class ConfigurationProvider {
this.config = config; this.config = config;
DebugManager_1.DebugManager.getInstance().initializeConfig(config); DebugManager_1.DebugManager.getInstance().initializeConfig(config);
} }
GetCurrentCommitResolver() { return new DefaultCurrentCommitResolver_1.DefaultCurrentCommitResolver(this.config); } GetCurrentCommitResolver() {
GetLastReleaseResolver() { return new DefaultLastReleaseResolver_1.DefaultLastReleaseResolver(this.config); } return new DefaultCurrentCommitResolver_1.DefaultCurrentCommitResolver(this.config);
GetCommitsProvider() { return new DefaultCommitsProvider_1.DefaultCommitsProvider(this.config); } }
GetLastReleaseResolver() {
return new DefaultLastReleaseResolver_1.DefaultLastReleaseResolver(this.config);
}
GetCommitsProvider() {
return new DefaultCommitsProvider_1.DefaultCommitsProvider(this.config);
}
GetVersionClassifier() { GetVersionClassifier() {
if (this.config.bumpEachCommit) { if (this.config.bumpEachCommit) {
return new BumpAlwaysVersionClassifier_1.BumpAlwaysVersionClassifier(this.config); return new BumpAlwaysVersionClassifier_1.BumpAlwaysVersionClassifier(this.config);
} }
return new DefaultVersionClassifier_1.DefaultVersionClassifier(this.config); return new DefaultVersionClassifier_1.DefaultVersionClassifier(this.config);
} }
GetVersionFormatter() { return new DefaultVersionFormatter_1.DefaultVersionFormatter(this.config); } GetVersionFormatter() {
return new DefaultVersionFormatter_1.DefaultVersionFormatter(this.config);
}
GetTagFormatter(branchName) { GetTagFormatter(branchName) {
if (this.config.versionFromBranch) { if (this.config.versionFromBranch) {
return new BranchVersioningTagFormatter_1.BranchVersioningTagFormatter(this.config, branchName); return new BranchVersioningTagFormatter_1.BranchVersioningTagFormatter(this.config, branchName);
@ -35,8 +43,10 @@ class ConfigurationProvider {
} }
GetUserFormatter() { GetUserFormatter() {
switch (this.config.userFormatType) { switch (this.config.userFormatType) {
case 'json': return new JsonUserFormatter_1.JsonUserFormatter(this.config); case "json":
case 'csv': return new CsvUserFormatter_1.CsvUserFormatter(this.config); return new JsonUserFormatter_1.JsonUserFormatter(this.config);
case "csv":
return new CsvUserFormatter_1.CsvUserFormatter(this.config);
default: default:
throw new Error(`Unknown user format type: ${this.config.userFormatType}, supported types: json, csv`); throw new Error(`Unknown user format type: ${this.config.userFormatType}, supported types: json, csv`);
} }

View file

@ -41,7 +41,6 @@ class DebugManager {
this.replayMode = false; this.replayMode = false;
this.diagnosticInfo = new DiagnosticInfo(); this.diagnosticInfo = new DiagnosticInfo();
} }
;
/** Enables replay mode and loads the diagnostic information from the specified string */ /** Enables replay mode and loads the diagnostic information from the specified string */
replayFromDiagnostics(diagnostics) { replayFromDiagnostics(diagnostics) {
this.debugEnabled = false; this.debugEnabled = false;
@ -50,7 +49,7 @@ class DebugManager {
} }
/** Returns a JSON string containing the diagnostic information for this run */ /** Returns a JSON string containing the diagnostic information for this run */
getDebugOutput(emptyRepo = false) { getDebugOutput(emptyRepo = false) {
return this.isDebugEnabled() ? JSON.stringify(this.diagnosticInfo) : ''; return this.isDebugEnabled() ? JSON.stringify(this.diagnosticInfo) : "";
} }
/** Records a command and its output for diagnostic purposes */ /** Records a command and its output for diagnostic purposes */
recordCommand(command, args, output, stderr, error) { recordCommand(command, args, output, stderr, error) {
@ -62,9 +61,10 @@ class DebugManager {
/** Replays the specified command and returns the output */ /** Replays the specified command and returns the output */
replayCommand(command, args) { replayCommand(command, args) {
if (this.diagnosticInfo === null) { if (this.diagnosticInfo === null) {
throw new Error('No diagnostic information available for replay'); throw new Error("No diagnostic information available for replay");
} }
const commandResult = this.diagnosticInfo.commands.find(c => c.command === command && JSON.stringify(c.args) === JSON.stringify(args)); const commandResult = this.diagnosticInfo.commands.find((c) => c.command === command &&
JSON.stringify(c.args) === JSON.stringify(args));
if (!commandResult) { if (!commandResult) {
throw new Error(`No result found in diagnostic for command "${command}"`); throw new Error(`No result found in diagnostic for command "${command}"`);
} }

View file

@ -53,13 +53,20 @@ function runAction(configurationProvider) {
if (yield currentCommitResolver.IsEmptyRepoAsync()) { if (yield currentCommitResolver.IsEmptyRepoAsync()) {
core.info("VAGO REPO WAS EMPTY, returning default version information"); core.info("VAGO REPO WAS EMPTY, returning default version information");
const versionInfo = new VersionInformation_1.VersionInformation(0, 0, 0, 0, VersionType_1.VersionType.None, [], false, false); const versionInfo = new VersionInformation_1.VersionInformation(0, 0, 0, 0, VersionType_1.VersionType.None, [], false, false);
return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format('author', []), '', '', tagFormatter.Parse(tagFormatter.Format(versionInfo)).join('.'), debugManager.getDebugOutput(true)); return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format("author", []), "", "", tagFormatter.Parse(tagFormatter.Format(versionInfo)).join("."), debugManager.getDebugOutput(true));
} }
core.info("VAGO REPO IS NOT EMPTY, continuing with versioning"); core.info("VAGO REPO IS NOT EMPTY, continuing with versioning");
const currentCommit = yield currentCommitResolver.ResolveAsync(); const currentCommit = yield currentCommitResolver.ResolveAsync();
core.info("VAGO CURRENT COMMIT: " + currentCommit); core.info("VAGO CURRENT COMMIT: " + currentCommit);
const lastRelease = yield lastReleaseResolver.ResolveAsync(currentCommit, tagFormatter); const lastRelease = yield lastReleaseResolver.ResolveAsync(currentCommit, tagFormatter);
core.info("VAGO LAST RELEASE: " + lastRelease.hash + " " + lastRelease.major + "." + lastRelease.minor + "." + lastRelease.patch); core.info("VAGO LAST RELEASE: " +
lastRelease.hash +
" " +
lastRelease.major +
"." +
lastRelease.minor +
"." +
lastRelease.patch);
const commitSet = yield commitsProvider.GetCommitsAsync(lastRelease.hash, currentCommit); const commitSet = yield commitsProvider.GetCommitsAsync(lastRelease.hash, currentCommit);
core.info("VAGO commit set le:" + commitSet.commits.length); core.info("VAGO commit set le:" + commitSet.commits.length);
core.info("VAGO commit set changed: " + commitSet.changed.toString()); core.info("VAGO commit set changed: " + commitSet.changed.toString());
@ -71,8 +78,7 @@ function runAction(configurationProvider) {
// version information to be used by the formatters // version information to be used by the formatters
let versionInfo = new VersionInformation_1.VersionInformation(major, minor, patch, increment, type, commitSet.commits, changed, isTagged); let versionInfo = new VersionInformation_1.VersionInformation(major, minor, patch, increment, type, commitSet.commits, changed, isTagged);
// Group all the authors together, count the number of commits per author // Group all the authors together, count the number of commits per author
const allAuthors = versionInfo.commits const allAuthors = versionInfo.commits.reduce((acc, commit) => {
.reduce((acc, commit) => {
const key = `${commit.author} <${commit.authorEmail}>`; const key = `${commit.author} <${commit.authorEmail}>`;
acc[key] = acc[key] || { n: commit.author, e: commit.authorEmail, c: 0 }; acc[key] = acc[key] || { n: commit.author, e: commit.authorEmail, c: 0 };
acc[key].c++; acc[key].c++;
@ -81,7 +87,7 @@ function runAction(configurationProvider) {
const authors = Object.values(allAuthors) const authors = Object.values(allAuthors)
.map((u) => new UserInfo_1.UserInfo(u.n, u.e, u.c)) .map((u) => new UserInfo_1.UserInfo(u.n, u.e, u.c))
.sort((a, b) => b.commits - a.commits); .sort((a, b) => b.commits - a.commits);
return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format('author', authors), currentCommit, lastRelease.hash, `${lastRelease.major}.${lastRelease.minor}.${lastRelease.patch}`, debugManager.getDebugOutput()); return new VersionResult_1.VersionResult(versionInfo.major, versionInfo.minor, versionInfo.patch, versionInfo.increment, versionInfo.type, versionFormatter.Format(versionInfo), tagFormatter.Format(versionInfo), versionInfo.changed, versionInfo.isTagged, userFormatter.Format("author", authors), currentCommit, lastRelease.hash, `${lastRelease.major}.${lastRelease.minor}.${lastRelease.patch}`, debugManager.getDebugOutput());
}); });
} }
exports.runAction = runAction; exports.runAction = runAction;

View file

@ -38,15 +38,15 @@ const ConfigurationProvider_1 = require("./ConfigurationProvider");
const core = __importStar(require("@actions/core")); const core = __importStar(require("@actions/core"));
const VersionType_1 = require("./providers/VersionType"); const VersionType_1 = require("./providers/VersionType");
function setOutput(versionResult) { function setOutput(versionResult) {
const { major, minor, patch, increment, versionType, formattedVersion, versionTag, changed, isTagged, authors, currentCommit, previousCommit, previousVersion, debugOutput } = versionResult; const { major, minor, patch, increment, versionType, formattedVersion, versionTag, changed, isTagged, authors, currentCommit, previousCommit, previousVersion, debugOutput, } = versionResult;
const repository = process.env.GITHUB_REPOSITORY; const repository = process.env.GITHUB_REPOSITORY;
if (!changed) { if (!changed) {
core.info("VAGOOO1"); core.info("VAGOOO1");
core.info('No changes detected for this commit'); core.info("No changes detected for this commit");
} }
core.info(`Version is ${formattedVersion}`); core.info(`Version is ${formattedVersion}`);
if (repository !== undefined) { if (repository !== undefined) {
core.info(`To create a release for this version, go to https://github.com/${repository}/releases/new?tag=${versionTag}&target=${currentCommit.split('/').slice(-1)[0]}`); core.info(`To create a release for this version, go to https://github.com/${repository}/releases/new?tag=${versionTag}&target=${currentCommit.split("/").slice(-1)[0]}`);
} }
core.setOutput("version", formattedVersion); core.setOutput("version", formattedVersion);
core.setOutput("major", major.toString()); core.setOutput("major", major.toString());
@ -67,51 +67,51 @@ function run() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.info("VAGO Starting run action..."); core.info("VAGO Starting run action...");
function toBool(value) { function toBool(value) {
if (!value || value.toLowerCase() === 'false') { if (!value || value.toLowerCase() === "false") {
return false; return false;
} }
else if (value.toLowerCase() === 'true') { else if (value.toLowerCase() === "true") {
return true; return true;
} }
return false; return false;
} }
function toStringOrBool(value) { function toStringOrBool(value) {
if (!value || value === 'false') { if (!value || value === "false") {
return false; return false;
} }
if (value === 'true') { if (value === "true") {
return true; return true;
} }
return value; return value;
} }
const config = { const config = {
branch: core.getInput('branch'), branch: core.getInput("branch"),
tagPrefix: core.getInput('tag_prefix'), tagPrefix: core.getInput("tag_prefix"),
useBranches: toBool(core.getInput('use_branches')), useBranches: toBool(core.getInput("use_branches")),
versionFromBranch: toStringOrBool(core.getInput('version_from_branch')), versionFromBranch: toStringOrBool(core.getInput("version_from_branch")),
majorPattern: core.getInput('major_pattern'), majorPattern: core.getInput("major_pattern"),
minorPattern: core.getInput('minor_pattern'), minorPattern: core.getInput("minor_pattern"),
majorFlags: core.getInput('major_regexp_flags'), majorFlags: core.getInput("major_regexp_flags"),
minorFlags: core.getInput('minor_regexp_flags'), minorFlags: core.getInput("minor_regexp_flags"),
versionFormat: core.getInput('version_format'), versionFormat: core.getInput("version_format"),
changePath: core.getInput('change_path'), changePath: core.getInput("change_path"),
namespace: core.getInput('namespace'), namespace: core.getInput("namespace"),
bumpEachCommit: toBool(core.getInput('bump_each_commit')), bumpEachCommit: toBool(core.getInput("bump_each_commit")),
searchCommitBody: toBool(core.getInput('search_commit_body')), searchCommitBody: toBool(core.getInput("search_commit_body")),
userFormatType: core.getInput('user_format_type'), userFormatType: core.getInput("user_format_type"),
enablePrereleaseMode: toBool(core.getInput('enable_prerelease_mode')), enablePrereleaseMode: toBool(core.getInput("enable_prerelease_mode")),
bumpEachCommitPatchPattern: core.getInput('bump_each_commit_patch_pattern'), bumpEachCommitPatchPattern: core.getInput("bump_each_commit_patch_pattern"),
debug: toBool(core.getInput('debug')), debug: toBool(core.getInput("debug")),
replay: '' replay: "",
}; };
if (config.useBranches) { if (config.useBranches) {
core.warning(`The 'use_branches' input option is deprecated, please see the documentation for more information on how to use branches`); core.warning(`The 'use_branches' input option is deprecated, please see the documentation for more information on how to use branches`);
} }
if (config.versionFormat === '' && core.getInput('format') !== '') { if (config.versionFormat === "" && core.getInput("format") !== "") {
core.warning(`The 'format' input is deprecated, use 'versionFormat' instead`); core.warning(`The 'format' input is deprecated, use 'versionFormat' instead`);
config.versionFormat = core.getInput('format'); config.versionFormat = core.getInput("format");
} }
if (core.getInput('short_tags') !== '') { if (core.getInput("short_tags") !== "") {
core.warning(`The 'short_tags' input option is no longer supported`); core.warning(`The 'short_tags' input option is no longer supported`);
} }
const configurationProvider = new ConfigurationProvider_1.ConfigurationProvider(config); const configurationProvider = new ConfigurationProvider_1.ConfigurationProvider(config);