From 31b093e6de1e757004d498ce0a42fea0c32c8ea3 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Sun, 21 Aug 2022 13:05:29 +0100 Subject: [PATCH 1/5] Use GradleLocalProperties for reading warningsAsErrors from local.properties --- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index ef9ec9072..bdcad8876 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -17,6 +17,7 @@ package com.google.samples.apps.nowinandroid import com.android.build.api.dsl.CommonExtension +import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension @@ -46,7 +47,7 @@ internal fun Project.configureKotlinAndroid( kotlinOptions { // Treat all Kotlin warnings as errors (disabled by default) - allWarningsAsErrors = properties["warningsAsErrors"] as? Boolean ?: false + allWarningsAsErrors = gradleLocalProperties(rootDir).getProperty("warningsAsErrors").toBoolean() freeCompilerArgs = freeCompilerArgs + listOf( "-opt-in=kotlin.RequiresOptIn", From 87affa559378aeea66aa836cdca52a8b57c36c1a Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 23 Aug 2022 12:56:41 +0100 Subject: [PATCH 2/5] Read warningsAsErrors from local.properties or gradle.properties, and default to false --- .github/ci-gradle.properties | 7 +++++-- .../google/samples/apps/nowinandroid/KotlinAndroid.kt | 9 ++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/ci-gradle.properties b/.github/ci-gradle.properties index 089f2a675..54bc49dcb 100644 --- a/.github/ci-gradle.properties +++ b/.github/ci-gradle.properties @@ -21,5 +21,8 @@ org.gradle.workers.max=2 kotlin.incremental=false kotlin.compiler.execution.strategy=in-process -# Controls KotlinOptions.allWarningsAsErrors. This is used in CI and can be set in local properties. -warningsAsErrors=true +# Controls KotlinOptions.allWarningsAsErrors. +# This value used in CI and is currently set to false. +# If you want to treat warnings as errors locally, set this property +# in local.properties. +warningsAsErrors=false diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index bdcad8876..87d3e4b16 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -24,6 +24,7 @@ import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.provideDelegate import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions /** @@ -47,7 +48,13 @@ internal fun Project.configureKotlinAndroid( kotlinOptions { // Treat all Kotlin warnings as errors (disabled by default) - allWarningsAsErrors = gradleLocalProperties(rootDir).getProperty("warningsAsErrors").toBoolean() + // Override locally using local.properties + val localOverrideWarningsAsErrors = gradleLocalProperties(rootDir) + .getProperty("warningsAsErrors")?.toBoolean() + // Set on CI through gradle.properties + val warningsAsErrors: Boolean? by project + // Prefer local.properties, gradle.properties, or default to false + allWarningsAsErrors = localOverrideWarningsAsErrors ?: warningsAsErrors ?: false freeCompilerArgs = freeCompilerArgs + listOf( "-opt-in=kotlin.RequiresOptIn", From ce5875cef8044725f53605d9ac3facc933d17036 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Tue, 23 Aug 2022 13:34:01 +0100 Subject: [PATCH 3/5] Read gradle property as string instead of boolean, gradle sync fails otherwise. --- .github/ci-gradle.properties | 2 +- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/ci-gradle.properties b/.github/ci-gradle.properties index 54bc49dcb..1cd5c8496 100644 --- a/.github/ci-gradle.properties +++ b/.github/ci-gradle.properties @@ -25,4 +25,4 @@ kotlin.compiler.execution.strategy=in-process # This value used in CI and is currently set to false. # If you want to treat warnings as errors locally, set this property # in local.properties. -warningsAsErrors=false +warningsAsErrors="false" diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 87d3e4b16..9df96c5cb 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -23,6 +23,7 @@ import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.provideDelegate import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions @@ -52,9 +53,9 @@ internal fun Project.configureKotlinAndroid( val localOverrideWarningsAsErrors = gradleLocalProperties(rootDir) .getProperty("warningsAsErrors")?.toBoolean() // Set on CI through gradle.properties - val warningsAsErrors: Boolean? by project - // Prefer local.properties, gradle.properties, or default to false - allWarningsAsErrors = localOverrideWarningsAsErrors ?: warningsAsErrors ?: false + val warningsAsErrors: String? by project + // Prefer local.properties, gradle.properties, or default to false when both are null + allWarningsAsErrors = localOverrideWarningsAsErrors ?: warningsAsErrors.toBoolean() freeCompilerArgs = freeCompilerArgs + listOf( "-opt-in=kotlin.RequiresOptIn", From ac1471476ae96a40f1e979494bd33522e0437cb5 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Wed, 24 Aug 2022 17:42:21 +0100 Subject: [PATCH 4/5] Only use gradle.properties to read warningsAsErrors --- .github/ci-gradle.properties | 6 +++--- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/ci-gradle.properties b/.github/ci-gradle.properties index 1cd5c8496..bd989705d 100644 --- a/.github/ci-gradle.properties +++ b/.github/ci-gradle.properties @@ -23,6 +23,6 @@ kotlin.compiler.execution.strategy=in-process # Controls KotlinOptions.allWarningsAsErrors. # This value used in CI and is currently set to false. -# If you want to treat warnings as errors locally, set this property -# in local.properties. -warningsAsErrors="false" +# If you want to treat warnings as errors locally, set this property to true +# in your ~/.gradle/gradle.properties file. +warningsAsErrors=false diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 9df96c5cb..a0320f2a0 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -49,13 +49,9 @@ internal fun Project.configureKotlinAndroid( kotlinOptions { // Treat all Kotlin warnings as errors (disabled by default) - // Override locally using local.properties - val localOverrideWarningsAsErrors = gradleLocalProperties(rootDir) - .getProperty("warningsAsErrors")?.toBoolean() - // Set on CI through gradle.properties + // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties val warningsAsErrors: String? by project - // Prefer local.properties, gradle.properties, or default to false when both are null - allWarningsAsErrors = localOverrideWarningsAsErrors ?: warningsAsErrors.toBoolean() + allWarningsAsErrors = warningsAsErrors.toBoolean() freeCompilerArgs = freeCompilerArgs + listOf( "-opt-in=kotlin.RequiresOptIn", From eefe378347fdbb39a510ff025372742cba83fe42 Mon Sep 17 00:00:00 2001 From: Jolanda Verhoef Date: Wed, 24 Aug 2022 18:31:17 +0100 Subject: [PATCH 5/5] Remove unused imports --- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index a0320f2a0..5dc7b987d 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -17,13 +17,11 @@ package com.google.samples.apps.nowinandroid import com.android.build.api.dsl.CommonExtension -import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.provideDelegate import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions