Fix semantic version parser
ci/woodpecker/manual/gradle Pipeline was successful Details
ci/woodpecker/manual/pages Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2023-06-29 14:35:49 +02:00
parent 8d3c24c7f0
commit 034d1b0237
Signed by: Johannes
GPG Key ID: E76429612C2929F4
2 changed files with 2 additions and 4 deletions

View File

@ -1,7 +1,5 @@
package io.gitlab.jfronny.scripts
import java.lang.Runtime.Version
data class SemanticVersion(val major: Int, val minor: Int, val patch: Int, val type: VersionType, val build: String?): Comparable<SemanticVersion> {
init {
require(build == null || buildPattern.matches(build)) { "Illegal build string" }
@ -46,7 +44,7 @@ data class SemanticVersion(val major: Int, val minor: Int, val patch: Int, val t
companion object {
private val identifier = Regex("[a-zA-Z1-9][a-zA-Z0-9]*")
private val buildPattern = Regex("$identifier(?:\\.$identifier)+")
private val number = Regex("[1-9][0-9]*")
private val number = Regex("[1-9][0-9]*|0")
private val versionCore = Regex("($number)\\.($number)\\.($number)")
private val legacyVersion = Regex("([vba]|rc)$versionCore(\\+$buildPattern)?")
private val restrictedSemver = Regex("$versionCore(-(?:alpha|beta|rc))?(\\+$buildPattern)?")

View File

@ -7,7 +7,7 @@ enum class VersionType(val displayName: String, val curseforgeName: String, val
ALPHA("Alpha", "alpha", "alpha", "alpha", "a"),
BETA("Beta", "beta", "beta", "beta", "b"),
RELEASE_CANDIDATE("Release Candidate", "beta", "beta", "rc", "rc"),
RELEASE("Release", "release", "release", "release", "r");
RELEASE("Release", "release", "release", "release", "v");
companion object {
private val byShorthand = Arrays.stream(VersionType.values()).collect(Collectors.toUnmodifiableMap({ it.shorthand }, { it }))