-
Notifications
You must be signed in to change notification settings - Fork 65
Expand file tree
/
Copy pathVersioning.kt
More file actions
40 lines (32 loc) · 1.5 KB
/
Versioning.kt
File metadata and controls
40 lines (32 loc) · 1.5 KB
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
32
33
34
35
36
37
38
39
40
import java.io.File
import java.util.Properties
object Versioning {
fun loadVersioningData(): Map<String, Any> {
val version = mutableMapOf<String, Any>()
val versionProps = Properties().apply {
load(File("${System.getProperty("user.dir")}/version.properties").inputStream())
}
val versionMajor = versionProps["major"]?.toString()?.toInt() ?: 0
val versionMinor = versionProps["minor"]?.toString()?.toInt() ?: 0
val versionPatch = versionProps["patch"]?.toString()?.toInt() ?: 0
val versionBuild = versionProps["build"]?.toString()?.toInt() ?: 0
val versionChannel = versionProps["channel"]?.toString() ?: "release"
version["code"] = (versionMajor * 1_000_000) + (versionMinor * 10_000) + (versionPatch * 100) + versionBuild
version["name"] = "$versionMajor.$versionMinor.$versionPatch-rc$versionBuild"
var publishVersion = "$versionMajor.$versionMinor.$versionPatch"
if (versionChannel != "release") {
publishVersion = "$publishVersion-$versionChannel$versionBuild"
}
version["publish"] = publishVersion
val gitSha = "git rev-parse --short=10 HEAD".runCommand()?.trim() ?: ""
version["gitSha"] = gitSha
return version
}
private fun String.runCommand(): String? {
return try {
ProcessBuilder("/bin/sh", "-c", this).start().inputStream.bufferedReader().readText()
} catch (e: Exception) {
null
}
}
}