diff --git a/shared/buildSrc/src/main/kotlin/org/jetbrains/kotlin/VersionGenerator.kt b/shared/buildSrc/src/main/kotlin/org/jetbrains/kotlin/VersionGenerator.kt index b78f19a872d..223710f2b97 100644 --- a/shared/buildSrc/src/main/kotlin/org/jetbrains/kotlin/VersionGenerator.kt +++ b/shared/buildSrc/src/main/kotlin/org/jetbrains/kotlin/VersionGenerator.kt @@ -32,16 +32,20 @@ open class VersionGenerator: DefaultTask() { } ?: "MetaVersion.DEV" + private val versionPattern = "(\\d+)\\.(\\d+)(?:\\.(\\d+))?(?:-M(\\p{Digit}))?(?:-(\\p{Alpha}\\p{Alnum}*))?(?:-(\\d+))?".toRegex() + override fun configure(closure: Closure<*>): Task { val result = super.configure(closure) doFirst { val content = buildString { operator fun String.unaryPlus() = this@buildString.append(this) - val version = konanVersion.split(".") - val major = version[0].toInt() - val minor = version[1].toInt() - val maintenance = if (version.size > 2) version[2].toInt() else 0 - val milestone = konanVersion.split("-M").getOrNull(1)?.toInt() ?: -1 + val (majorStr, minorStr, maintenanceStr, milestoneStr) = + versionPattern.matchEntire(konanVersion)?.destructured + ?: throw IllegalArgumentException("Cannot parse Kotlin/Native version: $konanVersion") + val major = majorStr.toInt() + val minor = minorStr.toInt() + val maintenance = maintenanceStr.toIntOrNull() ?: 0 + val milestone = milestoneStr.toIntOrNull() ?: -1 project.logger.info("BUILD_NUMBER: $buildNumber") val build = buildNumber?.let { it.split("-").last().toInt() //7-dev-buildcount