diff --git a/build.gradle.kts b/build.gradle.kts index 6b90142cd..07435a8f7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,17 +1,17 @@ import groovy.lang.Closure -import groovy.util.Node import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.util.Date import java.text.SimpleDateFormat -import groovy.util.NodeList -import org.gradle.kotlin.dsl.accessors.runtime.addDependencyTo +import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream val mod_version: String by project val mc_version: String by project val forge_version: String by project val mod_id: String by project val handle_deps: String by project +val use_commit_hash_in_version: String by project val handleDeps = handle_deps == "true" +val useCommitHashInVersion = use_commit_hash_in_version == "true" plugins { java @@ -26,9 +26,62 @@ configurations { get("implementation").extendsFrom(get("library"), get("klibrary")) } -version = mod_version +version = if (useCommitHashInVersion) getCommitVersion() else mod_version group = "ru.dbotthepony" +fun getCommitVersion(): String { + try { + val versionStream = FastByteArrayOutputStream() + val tagStream = FastByteArrayOutputStream() + val countStream = FastByteArrayOutputStream() + + val gotVersion = exec { + commandLine("git", "rev-parse", "--short", "HEAD") + workingDir(".") + standardOutput = versionStream + }.exitValue == 0 + + val gotCount = exec { + commandLine("git", "rev-list", "--count", "HEAD") + workingDir(".") + standardOutput = countStream + }.exitValue == 0 + + val gotTag = exec { + commandLine("git", "tag", "--points-at", "HEAD") + workingDir(".") + standardOutput = tagStream + }.exitValue == 0 + + val version = versionStream.array.copyOfRange(0, versionStream.length).toString(Charsets.UTF_8).trim() + val tag = tagStream.array.copyOfRange(0, tagStream.length).toString(Charsets.UTF_8).trim() + val count = countStream.array.copyOfRange(0, countStream.length).toString(Charsets.UTF_8).trim() + + if (!gotVersion) { + return mod_version + } + + if (gotTag && tag != "") { + if (gotCount && count != "") { + return "$tag-SNAPSHOT-${version}_$count" + } else { + return "$tag-SNAPSHOT-$version" + } + } + + if (gotCount && count != "") { + return "$mod_version-SNAPSHOT-${version}_$count" + } + + return "$mod_version-SNAPSHOT-$version" + } catch(err: Throwable) { + println("Error getting git version") + println(err) + } + + return mod_version +} + java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) println("Targeting Java ${java.toolchain.languageVersion.get()}") diff --git a/gradle.properties b/gradle.properties index 0d2e1e5da..a575365e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,9 @@ org.gradle.daemon=true kotlin.stdlib.default.dependency=false mod_id=overdrive_that_matters -mod_version=1.0-SNAPSHOT +mod_version=1.0 + +use_commit_hash_in_version=true mc_version=1.19.2 forge_gradle_version=5.1.27