diff options
author | Linnea Gräf <nea@nea.moe> | 2024-07-11 02:21:41 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-07-11 02:21:41 +0200 |
commit | e683aa1e6c2e6efe2502e78f23c86fbb9d4b86fe (patch) | |
tree | b867cc90b4a3cc9dfced6731fa9a189a302c4788 /buildSrc | |
parent | feca9c937be40bfed255e6574dea70d640fdafea (diff) | |
download | firmament-e683aa1e6c2e6efe2502e78f23c86fbb9d4b86fe.tar.gz firmament-e683aa1e6c2e6efe2502e78f23c86fbb9d4b86fe.tar.bz2 firmament-e683aa1e6c2e6efe2502e78f23c86fbb9d4b86fe.zip |
Add auto version generator
[no changelog]
Diffstat (limited to 'buildSrc')
-rw-r--r-- | buildSrc/src/lookupversion.kt | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/buildSrc/src/lookupversion.kt b/buildSrc/src/lookupversion.kt new file mode 100644 index 0000000..2fe9bb9 --- /dev/null +++ b/buildSrc/src/lookupversion.kt @@ -0,0 +1,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" +} |