Files
carpseeds.pl/wp-content/plugins/elementor-3.2.5-bck4/.github/scripts/update-prerelease-version.js
2024-07-15 11:28:08 +02:00

58 lines
1.7 KiB
JavaScript

'use strict';
const semverInc = require('semver/functions/inc');
const packageJson = require('../../package.json');
const fs = require('fs');
const preId = process.argv[2];
if (!['dev', 'beta'].includes(preId)) {
console.error('missing argument dev or beta mode');
process.exit(1);
return;
}
const bumpVersion = (relativeVersion, lastVersionTagName, bumpsFromCurrentVersion = 1) => {
const lastVersion = packageJson[lastVersionTagName] || '';
let expectedVersion = relativeVersion;
(new Array(bumpsFromCurrentVersion).fill(1)).forEach(() => {
expectedVersion = semverInc(expectedVersion, 'minor');
});
let currentLastVersionNumber = 0;
if (lastVersion) {
const splitVersion = lastVersion.split(`-${preId}`);
if (splitVersion[0] === expectedVersion) {
const currentLastVersion = splitVersion[splitVersion.length - 1];
currentLastVersionNumber = Number(currentLastVersion);
if (Number.isNaN(currentLastVersionNumber)) {
console.error(`invalid ${preId} version: ${currentLastVersion}`);
process.exit(1);
return;
}
}
}
const newVersion = `${expectedVersion}-${preId}${currentLastVersionNumber + 1}`;
packageJson[lastVersionTagName] = newVersion;
fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 4));
console.log(newVersion);
}
if (preId === 'beta') {
const relativeVersion = packageJson.version;
bumpVersion(relativeVersion, 'last_beta_version');
return;
}
if (preId === 'dev') {
const lastBetaVersion = (() => {
const attrValue = packageJson.last_beta_version;
if (!attrValue) {
return '';
}
return attrValue.split('-')[0];
})();
const relativeVersion = lastBetaVersion || packageJson.version;
bumpVersion(relativeVersion, 'last_dev_version');
}