aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-11-15 00:27:53 +0100
committerLinnea Gräf <nea@nea.moe>2024-11-15 18:40:20 +0100
commitf158a9d8b06834e5ab132e658913a7535175d0aa (patch)
tree079797365d7098f9c42c1946b8ccb323863f556c
parent2c8152335e600187d18edbd7f53760efda0399b1 (diff)
downloadFirmament-f158a9d8b06834e5ab132e658913a7535175d0aa.tar.gz
Firmament-f158a9d8b06834e5ab132e658913a7535175d0aa.tar.bz2
Firmament-f158a9d8b06834e5ab132e658913a7535175d0aa.zip
build: Upgrade versioning to handle multiple minecraft versions
-rw-r--r--build.gradle.kts2
-rw-r--r--buildSrc/src/lookupversion.kt35
-rwxr-xr-xdocs/release_script.sh16
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 <T> 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