From f35f29966d10bbedb381a1f8693b2184f82e107e Mon Sep 17 00:00:00 2001 From: nashcft Date: Mon, 28 Aug 2023 22:03:33 +0900 Subject: [PATCH] Extract kover configurations into a build-logic plugin --- app-android/build.gradle.kts | 24 +------------------ app-ios-shared/build.gradle.kts | 1 - build-logic/build.gradle.kts | 6 ++--- .../convention/AndroidFeaturePlugin.kt | 1 - ...overPlugin.kt => KoverEntryPointPlugin.kt} | 11 +++++++-- core/common/build.gradle.kts | 1 - core/data/build.gradle.kts | 1 - core/designsystem/build.gradle.kts | 1 - core/model/build.gradle.kts | 1 - core/testing/build.gradle.kts | 1 - core/ui/build.gradle.kts | 1 - feature/contributors/build.gradle.kts | 1 - 12 files changed, 13 insertions(+), 37 deletions(-) rename build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/{KoverPlugin.kt => KoverEntryPointPlugin.kt} (71%) diff --git a/app-android/build.gradle.kts b/app-android/build.gradle.kts index b30813c37..78ede44a5 100644 --- a/app-android/build.gradle.kts +++ b/app-android/build.gradle.kts @@ -10,7 +10,7 @@ plugins { id("droidkaigi.primitive.android.crashlytics") id("droidkaigi.primitive.detekt") id("droidkaigi.primitive.android.roborazzi") - id("droidkaigi.primitive.kover") + id("droidkaigi.primitive.kover.entrypoint") id("droidkaigi.primitive.android.osslicenses") } @@ -116,25 +116,3 @@ dependencies { implementation(libs.firebaseDynamicLinks) testImplementation(projects.core.testing) } - -// Dependency configuration to aggregate Kover coverage reports -// TODO: extract report aggregation to build-logic -dependencies { - kover(projects.appIosShared) - - kover(projects.feature.about) - kover(projects.feature.contributors) - kover(projects.feature.floorMap) - kover(projects.feature.main) - kover(projects.feature.sessions) - kover(projects.feature.sponsors) - kover(projects.feature.staff) - kover(projects.feature.achievements) - - kover(projects.core.common) - kover(projects.core.data) - kover(projects.core.designsystem) - kover(projects.core.model) - kover(projects.core.testing) - kover(projects.core.ui) -} diff --git a/app-ios-shared/build.gradle.kts b/app-ios-shared/build.gradle.kts index 5c4115599..27119fb1d 100644 --- a/app-ios-shared/build.gradle.kts +++ b/app-ios-shared/build.gradle.kts @@ -5,7 +5,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework plugins { id("droidkaigi.primitive.kmp") id("droidkaigi.primitive.kmp.ios") - id("droidkaigi.primitive.kover") } kotlin { diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index a2a694f08..bbfbb71bc 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -94,9 +94,9 @@ gradlePlugin { id = "droidkaigi.primitive.kmp.serialization" implementationClass = "io.github.droidkaigi.confsched2023.primitive.KotlinSerializationPlugin" } - register("kover") { - id = "droidkaigi.primitive.kover" - implementationClass = "io.github.droidkaigi.confsched2023.primitive.KoverPlugin" + register("koverEntryPoint") { + id = "droidkaigi.primitive.kover.entrypoint" + implementationClass = "io.github.droidkaigi.confsched2023.primitive.KoverEntryPointPlugin" } register("detekt") { id = "droidkaigi.primitive.detekt" diff --git a/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/convention/AndroidFeaturePlugin.kt b/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/convention/AndroidFeaturePlugin.kt index 2f3584d9d..ae9b0d755 100644 --- a/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/convention/AndroidFeaturePlugin.kt +++ b/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/convention/AndroidFeaturePlugin.kt @@ -14,7 +14,6 @@ class AndroidFeaturePlugin : Plugin { apply("droidkaigi.primitive.android.compose") apply("droidkaigi.primitive.android.hilt") apply("droidkaigi.primitive.android.roborazzi") - apply("droidkaigi.primitive.kover") apply("droidkaigi.primitive.detekt") } diff --git a/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/KoverPlugin.kt b/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/KoverEntryPointPlugin.kt similarity index 71% rename from build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/KoverPlugin.kt rename to build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/KoverEntryPointPlugin.kt index 1acf05b93..a0304b511 100644 --- a/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/KoverPlugin.kt +++ b/build-logic/src/main/kotlin/io/github/droidkaigi/confsched2023/primitive/KoverEntryPointPlugin.kt @@ -5,10 +5,17 @@ import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure -class KoverPlugin : Plugin { +class KoverEntryPointPlugin : Plugin { override fun apply(target: Project) { + val koverPlugin = "org.jetbrains.kotlinx.kover" with(target) { - pluginManager.apply("org.jetbrains.kotlinx.kover") + pluginManager.apply(koverPlugin) + + rootProject.subprojects { + if (this@subprojects.name == target.name) return@subprojects + this@subprojects.pluginManager.apply(koverPlugin) + target.dependencies.add("kover", this@subprojects) + } configure { filters { diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index cd59ca22d..48f36fa6b 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -3,7 +3,6 @@ plugins { id("droidkaigi.primitive.kmp.android") id("droidkaigi.primitive.kmp.ios") id("droidkaigi.primitive.kmp.android.hilt") - id("droidkaigi.primitive.kover") id("droidkaigi.primitive.detekt") } diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index 654d8811b..c0bafc18d 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -6,7 +6,6 @@ plugins { id("droidkaigi.primitive.detekt") id("droidkaigi.primitive.kmp.ktorfit") id("droidkaigi.primitive.kmp.serialization") - id("droidkaigi.primitive.kover") } android.namespace = "io.github.droidkaigi.confsched2023.core.data" diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 832852a5e..c2f9c8688 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -6,7 +6,6 @@ plugins { id("droidkaigi.primitive.kmp.android.hilt") id("droidkaigi.primitive.detekt") id("droidkaigi.primitive.kmp.android.showkase") - id("droidkaigi.primitive.kover") } android.namespace = "io.github.droidkaigi.confsched2023.core.designsystem" diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index fc770724a..d9d27a0ec 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -2,7 +2,6 @@ plugins { id("droidkaigi.primitive.kmp") id("droidkaigi.primitive.kmp.android") id("droidkaigi.primitive.kmp.ios") - id("droidkaigi.primitive.kover") id("droidkaigi.primitive.detekt") } diff --git a/core/testing/build.gradle.kts b/core/testing/build.gradle.kts index 412792a01..8016717c1 100644 --- a/core/testing/build.gradle.kts +++ b/core/testing/build.gradle.kts @@ -3,7 +3,6 @@ plugins { id("droidkaigi.primitive.android.kotlin") id("droidkaigi.primitive.android.compose") id("droidkaigi.primitive.android.hilt") - id("droidkaigi.primitive.kover") id("droidkaigi.primitive.detekt") } diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index b39cafcb9..a396e8521 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id("droidkaigi.primitive.kmp.ios") id("droidkaigi.primitive.kmp.compose") id("droidkaigi.primitive.kmp.android.hilt") - id("droidkaigi.primitive.kover") id("droidkaigi.primitive.detekt") } diff --git a/feature/contributors/build.gradle.kts b/feature/contributors/build.gradle.kts index 1a505e35a..0bec9ab79 100644 --- a/feature/contributors/build.gradle.kts +++ b/feature/contributors/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id("droidkaigi.primitive.kmp.android.hilt") id("droidkaigi.primitive.kmp.ios") id("droidkaigi.primitive.kmp.compose") - id("droidkaigi.primitive.kover") } android.namespace = "io.github.droidkaigi.confsched2023.feature.contributors"