forked from PeterCxy/OpenEUICC
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>
54 lines
No EOL
1.7 KiB
Kotlin
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()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |