mirror of
https://github.com/yairm210/Unciv.git
synced 2025-01-05 13:08:48 +07:00
70 lines
3.1 KiB
JavaScript
70 lines
3.1 KiB
JavaScript
import fs from "fs";
|
|
// To be run from the main Unciv repo directory
|
|
// Increments the latest code version to include 'patch-X'
|
|
// Meant to be run from a Github action as part of patch release
|
|
// To test locally - `node .github/workflows/releasePatch.mjs`
|
|
|
|
//region Executed Code
|
|
(async () => {
|
|
const [newVersion, newAppCodeNumber] = updateBuildConfig();
|
|
updateGameVersion(newVersion, newAppCodeNumber);
|
|
console.log(newVersion)
|
|
})();
|
|
//endregion
|
|
|
|
//region Function Definitions
|
|
|
|
function getNextPatchVersion(currentVersion){
|
|
if (currentVersion.match(/^\d+\.\d+\.\d+$/)) return currentVersion + "-patch1"
|
|
const patchVersionRegexMatch = currentVersion.match(/^(\d+\.\d+\.\d+)-patch(\d+)$/);
|
|
if (!patchVersionRegexMatch) throw "Unrecognizable version format!"
|
|
const patchVersion = parseInt(patchVersionRegexMatch[2]) + 1;
|
|
return patchVersionRegexMatch[1] + "-patch" + patchVersion
|
|
}
|
|
|
|
|
|
function updateBuildConfig() {
|
|
const buildConfigPath = "buildSrc/src/main/kotlin/BuildConfig.kt";
|
|
let buildConfigString = fs.readFileSync(buildConfigPath).toString();
|
|
|
|
// console.log("Original: " + buildConfigString);
|
|
|
|
// Javascript string.match returns a regex string array, where array[0] is the entirety of the captured string,
|
|
// and array[1] is the first group, array[2] is the second group etc.
|
|
|
|
const appVersionMatch = buildConfigString.match(/appVersion = "(.*)"/);
|
|
const curVersion = appVersionMatch[1];
|
|
const newVersion = getNextPatchVersion(curVersion)
|
|
// console.log("New version: "+newVersion)
|
|
|
|
buildConfigString = buildConfigString.replace(appVersionMatch[0], appVersionMatch[0].replace(curVersion, newVersion));
|
|
const appCodeNumberMatch = buildConfigString.match(/appCodeNumber = (\d*)/);
|
|
let currentAppCodeNumber = appCodeNumberMatch[1];
|
|
// console.log("Current incremental version: " + currentAppCodeNumber);
|
|
const nextAppCodeNumber = Number(currentAppCodeNumber) + 1;
|
|
// console.log("Next incremental version: " + nextAppCodeNumber);
|
|
buildConfigString = buildConfigString.replace(appCodeNumberMatch[0],
|
|
appCodeNumberMatch[0].replace(currentAppCodeNumber, nextAppCodeNumber));
|
|
|
|
// console.log("Final: " + buildConfigString);
|
|
fs.writeFileSync(buildConfigPath, buildConfigString);
|
|
return [newVersion, nextAppCodeNumber];
|
|
}
|
|
|
|
function updateGameVersion(newVersionString, newAppCodeNumber) {
|
|
const gameInfoPath = "core/src/com/unciv/UncivGame.kt";
|
|
const gameInfoSource = fs.readFileSync(gameInfoPath).toString();
|
|
const regexp = /(\/\/region AUTOMATICALLY GENERATED VERSION DATA - DO NOT CHANGE THIS REGION, INCLUDING THIS COMMENT)[\s\S]*(\/\/endregion)/;
|
|
const withNewVersion = gameInfoSource.replace(regexp, function(match, grp1, grp2) {
|
|
const versionClassStr = createVersionClassString(newVersionString, newAppCodeNumber);
|
|
return `${grp1}\n val VERSION = ${versionClassStr}\n ${grp2}`;
|
|
})
|
|
fs.writeFileSync(gameInfoPath, withNewVersion);
|
|
}
|
|
|
|
function createVersionClassString(newVersionString, newAppCodeNumber) {
|
|
return `Version("${newVersionString}", ${newAppCodeNumber})`;
|
|
}
|
|
|
|
//endregion
|