secant-android-wallet/build-info-lib/build.gradle.kts

84 lines
2.2 KiB
Plaintext

import co.electriccoin.zcash.Git
import java.text.SimpleDateFormat
import java.util.*
plugins {
kotlin("multiplatform")
id("secant.kotlin-multiplatform-build-conventions")
id("secant.dependency-conventions")
}
// Injects build information
// Note timestamp is not currently injected because it effectively disables the cache since it
// changes with every build
val generateBuildConfigTask = tasks.create("buildConfig") {
val generatedDir = layout.buildDirectory.dir("generated").get().asFile
val gitInfo = co.electriccoin.zcash.Git.newInfo(
Git.HEAD,
parent!!.projectDir
)
//val buildTimestamp = newIso8601Timestamp()
inputs.property("gitSha", gitInfo.sha)
inputs.property("gitCommitCount", gitInfo.commitCount)
//inputs.property("buildTimestamp", buildTimestamp)
outputs.dir(generatedDir)
doLast {
val outputFile = File("$generatedDir/co/electriccoin/zcash/build/BuildConfig.kt")
outputFile.parentFile.mkdirs()
// To add timestamp, add this to the output below
// import kotlinx.datetime.Instant
// import kotlinx.datetime.toInstant
// val buildTimestamp: Instant = "$buildTimestamp".toInstant()
outputFile.writeText(
"""
// Generated file
package co.electriccoin.zcash.build
const val gitSha: String = "${gitInfo.sha}"
const val gitCommitCount: Int = ${gitInfo.commitCount}
""".trimIndent()
)
}
}
kotlin {
jvm()
sourceSets {
getByName("commonMain") {
dependencies {
kotlin.srcDir(generateBuildConfigTask)
//api(libs.kotlinx.datetime)
}
}
getByName("commonTest") {
dependencies {
implementation(kotlin("test"))
}
}
getByName("jvmMain") {
dependencies {
}
}
getByName("jvmTest") {
dependencies {
implementation(kotlin("test"))
}
}
}
}
/**
* @return Current ISO 8601 timestamp.
*/
fun newIso8601Timestamp(): String {
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ").apply {
timeZone = TimeZone.getTimeZone("UTC")
}
return formatter.format(Date())
}