UNPKG

1.18 kBJavaScriptView Raw
1/* jshint node:true */
2
3var semver = require('semver');
4var tagPrefix = require('../utils/tag-prefix');
5
6function semverStrategy(tags, options) {
7 var versions, latestVersion, nextVersion, releaseType;
8
9 versions = tags.filter(function(tagName) {
10 return semver.valid(tagPrefix.strip(tagName));
11 }).sort(function(a, b) {
12 return semver.compare(tagPrefix.strip(a), tagPrefix.strip(b));
13 }).reverse();
14
15 if (tags.length && !versions.length) {
16 throw "The repository has no tags that are SemVer compliant, you must specify a tag name with the --tag option.";
17 }
18
19 if (versions.length) {
20 if (options.major) {
21 releaseType = 'major';
22 } else if (options.minor) {
23 releaseType = 'minor';
24 } else {
25 releaseType = 'patch';
26 }
27
28 latestVersion = versions[0];
29 nextVersion = semver.inc(tagPrefix.strip(latestVersion), releaseType);
30
31 // If tags use prefixes, append it to the new tag
32 if (tagPrefix.has(latestVersion)) {
33 nextVersion = tagPrefix.prepend(nextVersion);
34 }
35 } else {
36 nextVersion = 'v0.1.0';
37 }
38
39 return {
40 latest : latestVersion,
41 next : nextVersion
42 };
43}
44
45module.exports = semverStrategy;