From 8b0a9df2ea7e382bd8b705b376d43eb948788212 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Wed, 6 Mar 2024 16:31:52 -0500 Subject: [PATCH] Add property to override lint version (#767) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows us to specify it programmatically and source our version catalogs rather than only statically in `gradle.properties` --- .../src/main/kotlin/slack/gradle/SlackProperties.kt | 7 +++++++ slack-plugin/src/main/kotlin/slack/gradle/SlackVersions.kt | 2 ++ .../src/main/kotlin/slack/gradle/lint/LintTasks.kt | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/slack-plugin/src/main/kotlin/slack/gradle/SlackProperties.kt b/slack-plugin/src/main/kotlin/slack/gradle/SlackProperties.kt index 77b02d30c..b6317a67c 100644 --- a/slack-plugin/src/main/kotlin/slack/gradle/SlackProperties.kt +++ b/slack-plugin/src/main/kotlin/slack/gradle/SlackProperties.kt @@ -291,6 +291,13 @@ internal constructor( public val lintIgnoreTestSources: Boolean get() = booleanProperty("sgp.lint.ignoreTestSources", false) + /** + * Flag to control which agp version should be used for lint. Optional. Value should be a version + * key in `libs.versions.toml`, + */ + public val lintVersionOverride: String? + get() = optionalStringProperty("sgp.lint.agpVersion") + /** * Flag to indicate whether this project is a test library (such as test utils, test fixtures, * etc). diff --git a/slack-plugin/src/main/kotlin/slack/gradle/SlackVersions.kt b/slack-plugin/src/main/kotlin/slack/gradle/SlackVersions.kt index 1936105e8..e9911c27f 100644 --- a/slack-plugin/src/main/kotlin/slack/gradle/SlackVersions.kt +++ b/slack-plugin/src/main/kotlin/slack/gradle/SlackVersions.kt @@ -76,6 +76,8 @@ internal class SlackVersions(val catalog: VersionCatalog) { val robolectric: String? get() = getOptionalValue("robolectric").orElse(null) + fun lookupVersion(key: String) = getOptionalValue(key) + val bundles = Bundles() inner class Bundles { diff --git a/slack-plugin/src/main/kotlin/slack/gradle/lint/LintTasks.kt b/slack-plugin/src/main/kotlin/slack/gradle/lint/LintTasks.kt index 4a7e5c226..41f51ea29 100644 --- a/slack-plugin/src/main/kotlin/slack/gradle/lint/LintTasks.kt +++ b/slack-plugin/src/main/kotlin/slack/gradle/lint/LintTasks.kt @@ -145,6 +145,11 @@ internal object LintTasks { onProjectSkipped: (String, String) -> Unit, ) = androidExtension.finalizeDsl { extension -> + slackProperties.lintVersionOverride?.let { + val lintVersion = slackProperties.versions.lookupVersion(it) + extension.experimentalProperties["android.experimental.lint.version"] = lintVersion + } + log("Applying ciLint to Android project") log(