blob: 6f32a8de13d41f18149c08081800dfc6a63ee619 [file]
const releases = require('../data/release-pulsar.js');
const moment = require('moment');
const semver = require('semver/preload');
function resolveActiveSupport(ver, released) {
const support = moment(released);
if (ver.compareMain('3.0.0') < 0) {
return support.add(12, 'months');
} else if (ver.minor > 0) {
return support.add(6, 'months');
} else {
// 36 months for security updates
return support.add(36, 'months');
}
}
function getSupportedVersionBranches(releases) {
const releaseList = releases
.map(r => ({
version: semver.coerce(r.tagName),
released: moment(r.publishedAt)
}));
const now = moment();
const supportedVersions = releaseList
.filter(release => {
if (release.version.patch === 0) {
const supportEnd = resolveActiveSupport(release.version, release.released);
return supportEnd.isAfter(now);
} else {
return false;
}
})
.sort((a, b) => semver.rcompare(b.version, a.version))
.map(release => `${release.version.major}.${release.version.minor}.x`);
const latestBranch = `${releaseList[0].version.major}.${releaseList[0].version.minor}.x`;
return supportedVersions.includes(latestBranch)
? supportedVersions
: [...supportedVersions, latestBranch];
}
const supported = getSupportedVersionBranches(releases);
console.log(supported.join(' '));