[build][version] replace old version string parsing with regex

This commit is contained in:
Vasily Levchenko
2020-02-24 12:14:10 +01:00
parent bb32410100
commit 7f49eae401
@@ -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