From f158a9d8b06834e5ab132e658913a7535175d0aa Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Fri, 15 Nov 2024 00:27:53 +0100 Subject: build: Upgrade versioning to handle multiple minecraft versions --- build.gradle.kts | 2 +- buildSrc/src/lookupversion.kt | 35 +++++++++++++++++------------------ docs/release_script.sh | 16 ++++++++++++---- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 53b0b87..91ab9e4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,7 +31,7 @@ plugins { id("moe.nea.mc-auto-translations") version "0.1.0" } -version = getGitTagInfo() + "-mc${libs.versions.minecraft.get()}" +version = getGitTagInfo(libs.versions.minecraft.get()) group = rootProject.property("maven_group").toString() java { diff --git a/buildSrc/src/lookupversion.kt b/buildSrc/src/lookupversion.kt index 53b2df9..0f1b0c1 100644 --- a/buildSrc/src/lookupversion.kt +++ b/buildSrc/src/lookupversion.kt @@ -1,26 +1,25 @@ - fun execString(vararg args: String): String { - val pb = ProcessBuilder(*args) - .redirectOutput(ProcessBuilder.Redirect.PIPE) - .start() - pb.waitFor() - return pb.inputStream.readAllBytes().decodeToString().trim() + val pb = ProcessBuilder(*args) + .redirectOutput(ProcessBuilder.Redirect.PIPE) + .start() + pb.waitFor() + return pb.inputStream.readAllBytes().decodeToString().trim() } -private val tag = "([0-9.]+)\\.0".toRegex() -private val tagOffset = "([0-9.]+)\\.0-([0-9]+)..+".toRegex() +private val tag = "([0-9.]+)(?:\\+.*)?".toRegex() +private val tagOffset = "([0-9.]+)(?:\\+.*)?-([0-9]+)-(.+)".toRegex() inline fun Regex.useMatcher(string: String, block: (MatchResult) -> T): T? { - return matchEntire(string)?.let(block) + return matchEntire(string)?.let(block) } -fun getGitTagInfo(): String { - val str = execString("git", "describe", "--tags", "HEAD") - tag.useMatcher(str) { - return it.groupValues[0] - } - tagOffset.useMatcher(str) { - return it.groupValues[1] + "." + it.groupValues[2] - } - return "nogitversion" +fun getGitTagInfo(mcVersion: String): String { + val str = execString("git", "describe", "--tags", "HEAD") + tag.useMatcher(str) { + return it.groupValues[1] + "+mc$mcVersion" + } + tagOffset.useMatcher(str) { + return it.groupValues[1] + "-dev+mc$mcVersion+" + it.groupValues[3] + } + return "nogitversion+mc$mcVersion" } diff --git a/docs/release_script.sh b/docs/release_script.sh index 4c79e60..43663b4 100755 --- a/docs/release_script.sh +++ b/docs/release_script.sh @@ -84,7 +84,6 @@ parse_commandline "$@" set -euo pipefail REMOTE=origin -BRANCH=master basedir="$(dirname "$(dirname "$(realpath "$0")")")" echo "Found base directory at $basedir" @@ -104,8 +103,10 @@ if [ -n "$(git status --porcelain)" ] && [ "$_arg_no_check" == off ]; then exit 1 fi -if ! [[ "$(git rev-parse --abbrev-ref HEAD)" = "$BRANCH" ]]; then - echo "Not on branch $BRANCH." +current_branch="$(git rev-parse --abbrev-ref HEAD)" + +if ! [[ "$current_branch" = "master" ]] && ! [[ "$current_branch" = mc-* ]]; then + echo "Not on branch master or a mc- branch." exit 1 fi @@ -117,8 +118,15 @@ oldversion="$(git describe --tags --abbrev=0|tr -d '\n')" echo "Choosing old version as $oldversion" +# TODO: auto choose next version based on a command line flag: --minor --hotfix --major as well as minecraft info from libs.versions.toml echo -n "Choosing next version as: " read newversion + +if ! [[ "$newversion" = *+mc* ]] && [ "$_arg_no_check" == off ]; then + echo "Illegal next version $newversion. Please use a.b.c+mcx.y.z" + exit 1 +fi + echo "Confirming new version as $newversion" echo Committing release commit @@ -153,7 +161,7 @@ cat "$releasenotes" echo ---------------------------------------------- echo Pushing to github -git push "$REMOTE" "$BRANCH" "$newversion" +git push "$REMOTE" "HEAD" "$newversion" if command -v gh; then echo Creating github release -- cgit