OpenEUICC/buildSrc/src/main/kotlin/im/angry/openeuicc/build/Versioning.kt
septs a8b7482afb feat: version name suffix (#215)
see https://developer.android.com/build/build-variants

Reviewed-on: PeterCxy/OpenEUICC#215
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
2025-08-10 22:08:31 +02:00

54 lines
No EOL
1.7 KiB
Kotlin

package im.angry.openeuicc.build
import com.android.build.gradle.internal.api.ApkVariantOutputImpl
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import java.io.ByteArrayOutputStream
val Project.gitVersionCode: Int
get() =
try {
val stdout = ByteArrayOutputStream()
exec {
commandLine("git", "rev-list", "--first-parent", "--count", "HEAD")
standardOutput = stdout
}
stdout.toString("utf-8").trim('\n').toInt()
} catch (_: Exception) {
0
}
val Project.gitVersionName: String
get() =
try {
val stdout = ByteArrayOutputStream()
exec {
commandLine("git", "describe", "--always", "--tags", "--dirty")
standardOutput = stdout
}
stdout.toString("utf-8").trim('\n')
} catch (_: Exception) {
"Unknown"
}
class MyVersioningPlugin: Plugin<Project> {
override fun apply(target: Project) {
target.configure<BaseAppModuleExtension> {
defaultConfig {
versionCode = target.gitVersionCode
versionName = target.gitVersionName.removePrefix("unpriv-")
}
applicationVariants.all {
if (name == "debug") {
outputs.forEach {
(it as ApkVariantOutputImpl).versionCodeOverride =
(System.currentTimeMillis() / 1000).toInt()
}
}
}
}
}
}