Skip to content

Commit ea25c2a

Browse files
jaakkotuosaJaakko Tuosa, SOK Strategiayksikkö
authored and
Jaakko Tuosa, SOK Strategiayksikkö
committed
fix: ignore other prerelease tags when finding latest tag (absolute-version#211)
1 parent e0019fd commit ea25c2a

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ module.exports = async function standardVersion(argv) {
7979
if (pkg && pkg.version) {
8080
version = pkg.version;
8181
} else if (args.gitTagFallback) {
82-
version = await latestSemverTag(args.tagPrefix);
82+
version = await latestSemverTag(args);
8383
} else {
8484
throw new Error('no package file found');
8585
}

lib/latest-semver-tag.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,28 @@
11
const gitSemverTags = require('git-semver-tags');
22
const semver = require('semver');
33

4-
module.exports = function (tagPrefix = undefined) {
4+
module.exports = function ({ tagPrefix, prerelease }) {
55
return new Promise((resolve, reject) => {
66
gitSemverTags({ tagPrefix }, function (err, tags) {
77
if (err) return reject(err);
88
else if (!tags.length) return resolve('1.0.0');
99
// Respect tagPrefix
1010
tags = tags.map((tag) => tag.replace(new RegExp('^' + tagPrefix), ''));
11+
if (prerelease) {
12+
// ignore any other prelease tags
13+
tags = tags.filter((tag) => {
14+
if (!semver.valid(tag)) return false;
15+
if (!semver.prerelease(tag)) {
16+
// include all non-prerelease versions
17+
return true;
18+
}
19+
// check if the name of the prerelease matches the one we are looking for
20+
if (semver.prerelease(tag)[0] === prerelease) {
21+
return true;
22+
}
23+
return false;
24+
});
25+
}
1126
// ensure that the largest semver tag is at the head.
1227
tags = tags.map((tag) => {
1328
return semver.clean(tag);

0 commit comments

Comments
 (0)