aboutsummaryrefslogtreecommitdiff
path: root/dokka-runners/dokkatoo/buildSrc/src/main/kotlin/buildsrc/conventions/android-setup.gradle.kts
diff options
context:
space:
mode:
Diffstat (limited to 'dokka-runners/dokkatoo/buildSrc/src/main/kotlin/buildsrc/conventions/android-setup.gradle.kts')
-rw-r--r--dokka-runners/dokkatoo/buildSrc/src/main/kotlin/buildsrc/conventions/android-setup.gradle.kts78
1 files changed, 78 insertions, 0 deletions
diff --git a/dokka-runners/dokkatoo/buildSrc/src/main/kotlin/buildsrc/conventions/android-setup.gradle.kts b/dokka-runners/dokkatoo/buildSrc/src/main/kotlin/buildsrc/conventions/android-setup.gradle.kts
new file mode 100644
index 00000000..ed22d799
--- /dev/null
+++ b/dokka-runners/dokkatoo/buildSrc/src/main/kotlin/buildsrc/conventions/android-setup.gradle.kts
@@ -0,0 +1,78 @@
+package buildsrc.conventions
+
+import org.jetbrains.kotlin.util.suffixIfNot
+
+
+/**
+ * Utilities for preparing Android projects
+ */
+
+plugins {
+ base
+ id("buildsrc.conventions.base")
+}
+
+
+val androidSdkDirPath: Provider<String> = providers
+ // first try getting the SDK installed on via GitHub step setup-android
+ .environmentVariable("ANDROID_SDK_ROOT").map(::File)
+ // else get the project-local SDK
+ .orElse(layout.projectDirectory.file("projects/ANDROID_SDK").asFile)
+ .map { it.invariantSeparatorsPath }
+
+
+val createAndroidLocalPropertiesFile by tasks.registering {
+
+ val localPropertiesFile = temporaryDir.resolve("local.properties")
+ outputs.file(localPropertiesFile).withPropertyName("localPropertiesFile")
+
+ val androidSdkDirPath = androidSdkDirPath
+ inputs.property("androidSdkDirPath", androidSdkDirPath)
+
+ doLast {
+ localPropertiesFile.apply {
+ parentFile.mkdirs()
+ createNewFile()
+ writeText(
+ """
+ |# DO NOT EDIT - Generated by $path
+ |
+ |sdk.dir=${androidSdkDirPath.get()}
+ |
+ """.trimMargin()
+ )
+ }
+ }
+}
+
+
+val updateAndroidLocalProperties by tasks.registering {
+
+ // find all local.properties files
+ val localPropertiesFiles = layout.projectDirectory.dir("projects")
+ .asFileTree
+ .matching { include("**/local.properties") }
+ .files
+
+ outputs.files(localPropertiesFiles).withPropertyName("localPropertiesFiles")
+
+ val androidSdkDirPath = androidSdkDirPath
+ inputs.property("androidSdkDirPath", androidSdkDirPath)
+
+ doLast {
+ localPropertiesFiles
+ .filter { it.exists() }
+ .forEach { file ->
+ file.writeText(
+ file.useLines { lines ->
+ lines.joinToString("\n") { line ->
+ when {
+ line.startsWith("sdk.dir=") -> "sdk.dir=${androidSdkDirPath.get()}"
+ else -> line
+ }
+ }.suffixIfNot("\n")
+ }
+ )
+ }
+ }
+}