58 lines
1.7 KiB
JavaScript
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');
|
|
}
|