UNPKG

1.39 kBJavaScriptView Raw
1const semver = require('semver');
2const {FIRST_RELEASE, FIRSTPRERELEASE} = require('./definitions/constants');
3const {isSameChannel, getLatestVersion, tagsToVersions, highest} = require('./utils');
4
5module.exports = ({branch, nextRelease: {type, channel}, lastRelease, logger}) => {
6 let version;
7 if (lastRelease.version) {
8 const {major, minor, patch} = semver.parse(lastRelease.version);
9
10 if (branch.type === 'prerelease') {
11 if (
12 semver.prerelease(lastRelease.version) &&
13 lastRelease.channels.some((lastReleaseChannel) => isSameChannel(lastReleaseChannel, channel))
14 ) {
15 version = highest(
16 semver.inc(lastRelease.version, 'prerelease'),
17 `${semver.inc(getLatestVersion(tagsToVersions(branch.tags), {withPrerelease: true}), type)}-${
18 branch.prerelease
19 }.${FIRSTPRERELEASE}`
20 );
21 } else {
22 version = `${semver.inc(`${major}.${minor}.${patch}`, type)}-${branch.prerelease}.${FIRSTPRERELEASE}`;
23 }
24 } else {
25 version = semver.inc(lastRelease.version, type);
26 }
27
28 logger.log('The next release version is %s', version);
29 } else {
30 version = branch.type === 'prerelease' ? `${FIRST_RELEASE}-${branch.prerelease}.${FIRSTPRERELEASE}` : FIRST_RELEASE;
31 logger.log(`There is no previous release, the next release version is ${version}`);
32 }
33
34 return version;
35};