From b18e8d2a5cde08103d2a6c15ddc9f29b5c573f9d Mon Sep 17 00:00:00 2001 From: JFronny Date: Thu, 10 Oct 2024 11:05:27 +0200 Subject: [PATCH] fix(autoversion): try to correct for CI environment --- .../src/main/kotlin/jf.autoversion.gradle.kts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/convention/src/main/kotlin/jf.autoversion.gradle.kts b/convention/src/main/kotlin/jf.autoversion.gradle.kts index 8640a9d..88d9de1 100644 --- a/convention/src/main/kotlin/jf.autoversion.gradle.kts +++ b/convention/src/main/kotlin/jf.autoversion.gradle.kts @@ -7,17 +7,20 @@ val isRelease = project.hasProperty("release") val specialCaseBuilds = setOf("forge", "fabric", "neoforge") fun List.filter(): Pair? { if (isEmpty()) return null - if (size == 1) return first() to null + val envName = System.getenv("CI_COMMIT_TAG") + val current = envName?.let { v -> indexOfFirst { it.name == v } } ?: 0 + if (current == -1) throw IllegalStateException("Current tag ($envName) not found in tag list") + if (size == current) return get(current) to null - val ver = SemanticVersion.tryParse(first().name) + val ver = SemanticVersion.tryParse(get(current).name) // special case: some mod projects use the format 1.0.0+forge to classify builds for different loaders // this ensures changelogs get generated within the same loader branch if (ver?.build in specialCaseBuilds) { - val preceding = drop(1).firstOrNull { SemanticVersion.tryParse(it.name)?.build == ver?.build } - if (preceding != null) return first() to preceding + val preceding = drop(current + 1).firstOrNull { SemanticVersion.tryParse(it.name)?.build == ver?.build } + if (preceding != null) return get(current) to preceding } - return first() to get(1) + return get(current) to get(current + 1) } versionS = "0.0.0+nogit"