aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/lookupversion.kt
blob: 2fe9bb9274d88a03b1acde508d9724fb5ea7859a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 * SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe>
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 */

fun execString(vararg args: String): String {
    val pb = ProcessBuilder(*args)
        .redirectOutput(ProcessBuilder.Redirect.PIPE)
        .start()
    pb.waitFor()
    return pb.inputStream.readAllBytes().decodeToString().trim()
}

private val tag = "([0-9.]+)\\.0".toRegex()
private val tagOffset = "([0-9.]+)\\.0-([0-9]+)..+".toRegex()

inline fun <T> Regex.useMatcher(string: String, block: (MatchResult) -> T): T? {
    return matchEntire(string)?.let(block)
}

fun getGitTagInfo(): String {
    val str = execString("git", "describe", "--tags", "HEAD")
    tag.useMatcher(str) {
        return it.groupValues[0]
    }
    tagOffset.useMatcher(str) {
        return it.groupValues[1] + "." + it.groupValues[2]
    }
    return "nogitversion"
}