Skip to content

Commit

Permalink
Fixing version reset if greater version incremented
Browse files Browse the repository at this point in the history
  • Loading branch information
HardNorth committed Jul 2, 2020
1 parent 03b0319 commit 1d3f06d
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 15 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## [Unreleased]

## [1.0.1]
## Fixed
- Version reset if a version of a greater value incremented

## [1.0.0]
### Added
- Initial release, see README.md for the list of features
6 changes: 3 additions & 3 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,15 @@ inputs:

# Next version
next-version-increment-major:
description: 'Increment major version in result NEXT_VERSION'
description: 'Increment major version in result NEXT_VERSION, resets all other versions to "0" and prerelease to "1" if found'
required: false
default: 'false'
next-version-increment-minor:
description: 'Increment minor version in result NEXT_VERSION'
description: 'Increment minor version in result NEXT_VERSION, resets patch to "0" and prerelease to "1" if found'
required: false
default: 'false'
next-version-increment-patch:
description: 'Increment patch version in result NEXT_VERSION'
description: 'Increment patch version in result NEXT_VERSION, resets prerelease to "1" if found'
required: false
default: 'false'
next-version-increment-prerelease:
Expand Down
18 changes: 14 additions & 4 deletions build/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20694,11 +20694,15 @@ function generateReleaseVersion(currentVersion, properties) {
return releaseVersion;
}

function incrementPrerelease(version) {
function incrementPrerelease(version, reset) {
let match = XRegExp.exec(version.prerelease, PRERELEASE_NUMBER_REGEX);
if (match) {
let prereleaseNumber = parseInt(match[0]);
prereleaseNumber += 1;
if(reset) {
prereleaseNumber = 1;
} else {
prereleaseNumber += 1;
}
version.prerelease = version.prerelease.substring(0, match["index"]) + prereleaseNumber +
version.prerelease.substring(match["index"] + match[0].length);
}
Expand All @@ -20709,21 +20713,27 @@ function generateNextVersion(currentVersion, releaseVersion, properties) {
if (!properties.nextIncrementPrerelease && !properties.nextIncrementPatch && !properties.nextIncrementMinor
&& !properties.nextIncrementMajor) {
let prerelease = nextVersion.prerelease;
incrementPrerelease(nextVersion);
incrementPrerelease(nextVersion, false);
if (prerelease === nextVersion.prerelease) {
nextVersion.patch += 1;
}
} else {
if (properties.nextIncrementPrerelease) {
incrementPrerelease(nextVersion);
incrementPrerelease(nextVersion, false);
}
if (properties.nextIncrementPatch) {
incrementPrerelease(nextVersion, true);
nextVersion.patch += 1;
}
if (properties.nextIncrementMinor) {
incrementPrerelease(nextVersion, true);
nextVersion.patch = 0;
nextVersion.minor += 1;
}
if (properties.nextIncrementMajor) {
incrementPrerelease(nextVersion, true);
nextVersion.minor = 0;
nextVersion.patch = 0;
nextVersion.major += 1;
}
}
Expand Down
18 changes: 14 additions & 4 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,11 +176,15 @@ function generateReleaseVersion(currentVersion, properties) {
return releaseVersion;
}

function incrementPrerelease(version) {
function incrementPrerelease(version, reset) {
let match = XRegExp.exec(version.prerelease, PRERELEASE_NUMBER_REGEX);
if (match) {
let prereleaseNumber = parseInt(match[0]);
prereleaseNumber += 1;
if (reset) {
prereleaseNumber = 1;
} else {
prereleaseNumber += 1;
}
version.prerelease = version.prerelease.substring(0, match["index"]) + prereleaseNumber +
version.prerelease.substring(match["index"] + match[0].length);
}
Expand All @@ -191,21 +195,27 @@ function generateNextVersion(currentVersion, releaseVersion, properties) {
if (!properties.nextIncrementPrerelease && !properties.nextIncrementPatch && !properties.nextIncrementMinor
&& !properties.nextIncrementMajor) {
let prerelease = nextVersion.prerelease;
incrementPrerelease(nextVersion);
incrementPrerelease(nextVersion, false);
if (prerelease === nextVersion.prerelease) {
nextVersion.patch += 1;
}
} else {
if (properties.nextIncrementPrerelease) {
incrementPrerelease(nextVersion);
incrementPrerelease(nextVersion, false);
}
if (properties.nextIncrementPatch) {
incrementPrerelease(nextVersion, true);
nextVersion.patch += 1;
}
if (properties.nextIncrementMinor) {
incrementPrerelease(nextVersion, true);
nextVersion.patch = 0;
nextVersion.minor += 1;
}
if (properties.nextIncrementMajor) {
incrementPrerelease(nextVersion, true);
nextVersion.minor = 0;
nextVersion.patch = 0;
nextVersion.major += 1;
}
}
Expand Down
8 changes: 4 additions & 4 deletions tests/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -258,17 +258,17 @@ const RELEASE_VERSION = new index.Version({
const NEXT_VERSION_TEST_CASES = [
[{}, CURRENT_VERSION, RELEASE_VERSION, "1.2.3-BETA-8-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-PUT-BUILD-METADATA": "true"}, CURRENT_VERSION, RELEASE_VERSION, "1.2.3-BETA-8-SNAPSHOT+build.2017-02-04.5e2079"],
[{"INPUT_NEXT-VERSION-INCREMENT-PATCH": "true"}, CURRENT_VERSION, RELEASE_VERSION, "1.2.4-BETA-7-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-INCREMENT-MINOR": "true"}, CURRENT_VERSION, RELEASE_VERSION, "1.3.3-BETA-7-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-INCREMENT-MAJOR": "true"}, CURRENT_VERSION, RELEASE_VERSION, "2.2.3-BETA-7-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-INCREMENT-PATCH": "true"}, CURRENT_VERSION, RELEASE_VERSION, "1.2.4-BETA-1-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-INCREMENT-MINOR": "true"}, CURRENT_VERSION, RELEASE_VERSION, "1.3.0-BETA-1-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-INCREMENT-MAJOR": "true"}, CURRENT_VERSION, RELEASE_VERSION, "2.0.0-BETA-1-SNAPSHOT"],
[{"INPUT_NEXT-VERSION-INCREMENT-PRERELEASE": "true"}, new index.Version({
...CURRENT_VERSION,
prerelease: "SNAPSHOT"
}), RELEASE_VERSION, "1.2.3-SNAPSHOT"],
[{
"INPUT_NEXT-VERSION-INCREMENT-MAJOR": "true",
"INPUT_NEXT-VERSION-INCREMENT-PRERELEASE": "true"
}, CURRENT_VERSION, RELEASE_VERSION, "2.2.3-BETA-8-SNAPSHOT"]
}, CURRENT_VERSION, RELEASE_VERSION, "2.0.0-BETA-1-SNAPSHOT"]
];
describe("Test next version generation with different properties", () => {
each(NEXT_VERSION_TEST_CASES).it("When inputs are '%s'; and current version is: '%s'; and release version is: '%s'; expected is '%s'", (inputs, currentVersion, releaseVersion, expected) => {
Expand Down

0 comments on commit 1d3f06d

Please sign in to comment.