OpenEUICC/buildSrc/src/main/kotlin/im/angry/openeuicc/build/Versioning.kt
Peter Cai 50c7b4a3be refactor: Migrate to build.gradle.kts
...and rework the original "helper.gradle" into proper plugins. This
also allows the signing configuration code to be shared, and now
keystore.properties is no longer mandatory.
2024-01-09 21:01:20 -05:00

54 lines
1.6 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", "master")
standardOutput = stdout
}
stdout.toString("utf-8").trim('\n').toInt()
} catch (e: 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 (e: Exception) {
"Unknown"
}
class MyVersioningPlugin: Plugin<Project> {
override fun apply(target: Project) {
target.configure<BaseAppModuleExtension> {
defaultConfig {
versionCode = target.gitVersionCode
versionName = target.gitVersionName
}
applicationVariants.all {
if (name == "debug") {
outputs.forEach {
(it as ApkVariantOutputImpl).versionCodeOverride =
(System.currentTimeMillis() / 1000).toInt()
}
}
}
}
}
}