Skip to content

Commit

Permalink
Build logic clean up.
Browse files Browse the repository at this point in the history
  • Loading branch information
ychescale9 committed Mar 2, 2024
1 parent b8a953b commit b5d5240
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 54 deletions.
21 changes: 10 additions & 11 deletions android/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,25 @@ plugins {
id("com.github.triplet.play")
}

// only apply google-services plugin if google-services.json exists
val googleServicesJsonExists = fileTree("src").matching {
include("**/google-services.json")
}.isEmpty.not()
if (googleServicesJsonExists) {
apply(plugin = "com.google.gms.google-services")
}

val enableAppVersioning = providers
.environmentVariable("ENABLE_APP_VERSIONING")
.getOrElse("true").toBoolean()
// disable google services plugin for demo and mock flavors
tasks.configureEach {
if ("process(Demo|Mock)DebugGoogleServices".toRegex().matches(name)) {
enabled = false
}
}

appVersioning {
enabled.set(enableAppVersioning)
enabled.set(
providers.environmentVariable("ENABLE_APP_VERSIONING").orElse("true").map { it.toBoolean() }
)
overrideVersionCode { _, _, _ ->
Instant.now().epochSecond.toInt()
}
Expand Down Expand Up @@ -159,13 +165,6 @@ android {
}
}

// disable google services plugin for demo and mock flavors
tasks.configureEach {
if ("process(Demo|Mock)DebugGoogleServices".toRegex().matches(name)) {
enabled = false
}
}

androidComponents {
beforeVariants {
// disable devRelease, demoRelease, mockRelease, prodDebug, demoBenchmark, mockBenchmark, prodBenchmark build variants
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,15 @@
package io.github.reactivecircus.kstreamlined.buildlogic

import com.android.build.gradle.internal.tasks.PerModuleReportDependenciesTask
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektPlugin
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project
import org.gradle.api.tasks.testing.Test
import org.gradle.api.tasks.testing.logging.TestLogEvent
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.the
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

/**
* Configure JUnit test options if applicable.
*/
internal fun Project.configureTest() {
tasks.withType<Test>().configureEach {
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1)
testLogging {
events(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED)
}
}
}

/**
* Apply and configure detekt.
*/
Expand Down Expand Up @@ -54,12 +39,3 @@ internal fun Project.configureDetekt() {
}
}
}

/**
* Mark tasks that are incompatible with configuration cache to prevent build failure.
*/
internal fun Project.markNonCompatibleConfigurationCacheTasks() {
tasks.withType<PerModuleReportDependenciesTask>().configureEach {
notCompatibleWithConfigurationCache("This AGP task doesn't support configuration cache.")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,6 @@ val Project.isCiBuild: Boolean
val Project.isIdeBuild: Boolean
get() = providers.systemProperty("idea.active").orNull == "true"

val Project.isRunningBenchmark: Boolean
get() {
val benchmarkPackageName = "io.github.reactivecircus.kstreamlined.android.benchmark"
return providers.gradleProperty("android.testInstrumentationRunnerArguments.class")
.orNull?.startsWith(benchmarkPackageName) == true
}

val Project.isAppleSilicon: Boolean
get() = providers.systemProperty("os.arch").orNull == "aarch64"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,22 @@ import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.android.build.api.variant.HasUnitTestBuilder
import com.android.build.api.variant.LibraryAndroidComponentsExtension
import org.gradle.api.Project
import org.gradle.api.tasks.testing.Test
import org.gradle.api.tasks.testing.logging.TestLogEvent
import org.gradle.kotlin.dsl.findByType
import org.gradle.kotlin.dsl.withType

/**
* Configure JUnit test options if applicable.
*/
internal fun Project.configureTest() {
tasks.withType<Test>().configureEach {
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1)
testLogging {
events(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED)
}
}
}

/**
* When the "slimTests" project property is provided, disable the unit test tasks
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt
import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinJvm
import io.github.reactivecircus.kstreamlined.buildlogic.configureSlimTests
import io.github.reactivecircus.kstreamlined.buildlogic.configureTest
import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
Expand Down Expand Up @@ -52,8 +51,7 @@ internal class AndroidApplicationConventionPlugin : Plugin<Project> {
}

configureTest()
configureDetekt()
markNonCompatibleConfigurationCacheTasks()
configureSlimTests()
configureDetekt()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt
import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinJvm
import io.github.reactivecircus.kstreamlined.buildlogic.configureSlimTests
import io.github.reactivecircus.kstreamlined.buildlogic.configureTest
import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
Expand Down Expand Up @@ -49,8 +48,7 @@ internal class AndroidLibraryConventionPlugin : Plugin<Project> {
}

configureTest()
configureDetekt()
markNonCompatibleConfigurationCacheTasks()
configureSlimTests()
configureDetekt()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import io.github.reactivecircus.kstreamlined.buildlogic.applyLanguageSettings
import io.github.reactivecircus.kstreamlined.buildlogic.configureAndroidTestOptions
import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt
import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinJvm
import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
Expand All @@ -32,6 +31,5 @@ internal class AndroidTestConventionPlugin : Plugin<Project> {
}

configureDetekt()
markNonCompatibleConfigurationCacheTasks()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt
import io.github.reactivecircus.kstreamlined.buildlogic.configureKMPCommon
import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinCompileOptions
import io.github.reactivecircus.kstreamlined.buildlogic.configureTest
import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
Expand All @@ -21,6 +20,5 @@ internal class KMPCommonConventionPlugin : Plugin<Project> {
configureKotlinCompileOptions()
configureTest()
configureDetekt()
markNonCompatibleConfigurationCacheTasks()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import io.github.reactivecircus.kstreamlined.buildlogic.configureDetekt
import io.github.reactivecircus.kstreamlined.buildlogic.configureKMPCommon
import io.github.reactivecircus.kstreamlined.buildlogic.configureKotlinCompileOptions
import io.github.reactivecircus.kstreamlined.buildlogic.configureTest
import io.github.reactivecircus.kstreamlined.buildlogic.markNonCompatibleConfigurationCacheTasks
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
Expand All @@ -21,6 +20,5 @@ internal class KMPIosOnlyConventionPlugin : Plugin<Project> {
configureKotlinCompileOptions()
configureTest()
configureDetekt()
markNonCompatibleConfigurationCacheTasks()
}
}

0 comments on commit b5d5240

Please sign in to comment.