From 4fb066dff5593a802ac53b681748da549d774f36 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 29 Nov 2021 02:19:27 +0530 Subject: build-logic/kotlin-plugins: add android and kapt plugins --- build-logic/kotlin-plugins/build.gradle.kts | 11 +++++- ...ndroid-password-store.kotlin-android.gradle.kts | 9 +++++ ...b.android-password-store.kotlin-kapt.gradle.kts | 45 ++++++++++++++++++++++ ...thub.android-password-store.spotless.gradle.kts | 1 + 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-android.gradle.kts create mode 100644 build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-kapt.gradle.kts diff --git a/build-logic/kotlin-plugins/build.gradle.kts b/build-logic/kotlin-plugins/build.gradle.kts index d097688e..0ce8e9de 100644 --- a/build-logic/kotlin-plugins/build.gradle.kts +++ b/build-logic/kotlin-plugins/build.gradle.kts @@ -1,6 +1,15 @@ -plugins { `kotlin-dsl` } +/* + * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ + +plugins { + `kotlin-dsl` + `kotlin-dsl-precompiled-script-plugins` +} dependencies { + implementation(libs.build.agp) implementation(libs.build.binarycompat) implementation(libs.build.kotlin) implementation(libs.build.spotless) diff --git a/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-android.gradle.kts b/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-android.gradle.kts new file mode 100644 index 00000000..1c3f1a27 --- /dev/null +++ b/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-android.gradle.kts @@ -0,0 +1,9 @@ +/* + * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ + +plugins { + kotlin("android") + id("com.github.android-password-store.kotlin-common") +} diff --git a/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-kapt.gradle.kts b/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-kapt.gradle.kts new file mode 100644 index 00000000..36642ba4 --- /dev/null +++ b/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.kotlin-kapt.gradle.kts @@ -0,0 +1,45 @@ +/* + * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ + +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.jetbrains.kotlin.gradle.plugin.KaptExtension + +plugins { + kotlin("android") + kotlin("kapt") +} + +afterEvaluate { + extensions.configure { + javacOptions { + if (hasDaggerCompilerDependency()) { + // https://dagger.dev/dev-guide/compiler-options#fastinit-mode + option("-Adagger.fastInit=enabled") + // Enable the better, experimental error messages + // https://github.com/google/dagger/commit/0d2505a727b54f47b8677f42dd4fc5c1924e37f5 + option("-Adagger.experimentalDaggerErrorMessages=enabled") + // Share test components for when we start leveraging Hilt for tests + // https://github.com/google/dagger/releases/tag/dagger-2.34 + option("-Adagger.hilt.shareTestComponents=true") + // KAPT nests errors causing real issues to be suppressed in CI logs + option("-Xmaxerrs", 500) + // Enables per-module validation for faster error detection + // https://github.com/google/dagger/commit/325b516ac6a53d3fc973d247b5231fafda9870a2 + option("-Adagger.moduleBindingValidation=ERROR") + } + } + } +} +// disable kapt tasks for unit tests +tasks.matching { it.name.startsWith("kapt") && it.name.endsWith("UnitTestKotlin") }.configureEach { + enabled = false +} + +fun Project.hasDaggerCompilerDependency(): Boolean { + return configurations.any { + it.dependencies.any { dependency -> dependency.name == "hilt-compiler" } + } +} diff --git a/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.spotless.gradle.kts b/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.spotless.gradle.kts index 83fae3d5..de0c1efd 100644 --- a/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.spotless.gradle.kts +++ b/build-logic/kotlin-plugins/src/main/kotlin/com.github.android-password-store.spotless.gradle.kts @@ -2,6 +2,7 @@ * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. * SPDX-License-Identifier: GPL-3.0-only */ + plugins { id("com.diffplug.spotless") } spotless { -- cgit v1.2.3