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(