All Downloads are FREE. Search and download functionalities are using the official Maven repository.

run.qontract.core.Version.kt Maven / Gradle / Ivy

package run.qontract.core

import java.lang.NumberFormatException

fun toVersion(versionSpec: String) =
    versionSpec.trim().split("\\.".toRegex()).let {parts ->
        if(parts.isEmpty())
            throw Exception("Major version does not exist in $versionSpec")

        Version(mustBeANumber(parts[0], "The first part of $versionSpec is not a number."), parts.getOrNull(1)?.let { mustBeANumber(it, "The second part of $versionSpec is not a number.") } )
    }

fun mustBeANumber(value: String, errorMessage: String): String {
    return try {
        value.toInt()
        value
    } catch (e: NumberFormatException) {
        throw Exception(errorMessage)
    }
}

data class Version(val majorVersion: String, val minorVersion: String?) {
    fun toQueryParams() = majorVersionFragment() + minorVersionFragment()

    private fun majorVersionFragment() = fragment(majorVersion, "majorVersion")
    private fun minorVersionFragment() = fragment(minorVersion, "minorVersion")
    private fun fragment(value: String?, name: String) = value?.let { "&$name=$it" } ?: ""

    fun toDisplayableString(): String {
        val minorVersionString = minorVersion?.let { ".$minorVersion" } ?: ""
        return "$majorVersion$minorVersionString"
    }

    fun incrementedMinorVersion(): Version = Version(majorVersion, minorVersion?.let { (it.toInt() + 1).toString() } ?: "1")
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy