Skip to content

Commit

Permalink
[馃悩 gradle-plugin] Use com.android.lint Gradle rules (#5639)
Browse files Browse the repository at this point in the history
* Use com.android.lint

* use version catalog
  • Loading branch information
martinbonnin committed Feb 22, 2024
1 parent 1152fb5 commit 0530f8d
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 19 deletions.
1 change: 1 addition & 0 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ dependencies {
implementation(libs.poet.kotlin)
implementation(libs.intellij.plugin)
implementation(libs.intellij.changelog)
implementation(libs.androidx.lint.gradle.plugin)

// We want the KSP plugin to use the version from the classpath and not force a newer version
// of the Gradle plugin
Expand Down
2 changes: 2 additions & 0 deletions gradle/libraries.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ androidx-activity = "androidx.activity:activity-ktx:1.7.2"
androidx-annotation = { group = "androidx.annotation", name = "annotation", version = "1.6.0" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version = "1.6.1" }
androidx-espresso-idlingresource = { group = "androidx.test.espresso", name = "espresso-idling-resource", version = "3.5.1" }
androidx-lint-rules = "androidx.lint:lint-gradle:1.0.0-alpha01"
androidx-lint-gradle-plugin = "com.android.lint:com.android.lint.gradle.plugin:8.2.2"
androidx-profileinstaller = "androidx.profileinstaller:profileinstaller:1.3.1"
androidx-sqlite = { group = "androidx.sqlite", name = "sqlite", version.ref = "androidx-sqlite" }
androidx-sqlite-framework = { group = "androidx.sqlite", name = "sqlite-framework", version.ref = "androidx-sqlite" }
Expand Down
4 changes: 4 additions & 0 deletions libraries/apollo-gradle-plugin-external/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ plugins {
id("java-gradle-plugin")
id("com.gradleup.gr8") // Only used for removeGradleApiFromApi()
id("org.jetbrains.kotlin.plugin.serialization")
id("com.android.lint")
}

apolloLibrary(
Expand All @@ -21,6 +22,9 @@ dependencies {
implementation(libs.asm)
implementation(libs.kotlinx.serialization.json)
}
dependencies {
lintChecks(libs.androidx.lint.rules)
}

gradlePlugin {
website.set("https://github.com/apollographql/apollo-kotlin")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ import org.gradle.api.Project

object AndroidProject {
fun onEachVariant(project: Project, withTestVariants: Boolean = false, block: (BaseVariant) -> Unit) {
project.applicationVariants?.all {
project.applicationVariants?.configureEach {
block(it)
}
project.libraryVariants?.all {
project.libraryVariants?.configureEach {
block(it)
}

if (withTestVariants) {
project.testVariants?.all {
project.testVariants?.configureEach {
block(it)
}
project.unitTestVariants?.all {
project.unitTestVariants?.configureEach {
block(it)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import org.gradle.api.Task
import org.gradle.api.file.Directory
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.TaskProvider
import java.io.File
import java.lang.reflect.Method
import java.lang.reflect.ParameterizedType

Expand All @@ -26,13 +25,13 @@ private fun Project.getVariants(): NamedDomainObjectContainer<BaseVariant> {
val extension = project.androidExtensionOrThrow
when (extension) {
is LibraryExtension -> {
extension.libraryVariants.all { variant ->
extension.libraryVariants.configureEach { variant ->
container.add(variant)
}
}

is AppExtension -> {
extension.applicationVariants.all { variant ->
extension.applicationVariants.configureEach { variant ->
container.add(variant)
}
}
Expand All @@ -42,10 +41,10 @@ private fun Project.getVariants(): NamedDomainObjectContainer<BaseVariant> {

@Suppress("USELESS_IS_CHECK", "KotlinRedundantDiagnosticSuppress")
if (extension is TestedExtension) {
extension.testVariants.all { variant ->
extension.testVariants.configureEach { variant ->
container.add(variant)
}
extension.unitTestVariants.all { variant ->
extension.unitTestVariants.configureEach { variant ->
container.add(variant)
}
}
Expand All @@ -63,17 +62,10 @@ fun connectToAndroidSourceSet(
kotlinSourceSet.srcDir(outputDir)
}

project.getVariants().all {
project.getVariants().configureEach {
if (it.sourceSets.any { it.name == sourceSetName }) {
if (kotlinSourceSet == null) {
try {
// AGP 7.0.0+: do things lazily
it.javaClass.getMethod("registerJavaGeneratingTask", TaskProvider::class.java, Array<File>::class.java)
.invoke(it, taskProvider, arrayOf(outputDir.get().asFile))
} catch (e: Exception) {
// Older AGP: do things eagerly
it.registerJavaGeneratingTask(taskProvider.get(), outputDir.get().asFile)
}
it.registerJavaGeneratingTask(taskProvider, outputDir.get().asFile)
} else {
// The kotlinSourceSet carries task dependencies, calling srcDir() above is enough
// to setup task dependencies
Expand Down Expand Up @@ -155,7 +147,7 @@ fun connectToAndroidVariant(project: Project, variant: Any, outputDir: Provider<

fun connectToAllAndroidVariants(project: Project, outputDir: Provider<Directory>, taskProvider: TaskProvider<out Task>) {
if (lazyRegisterJavaGeneratingTask != null) {
project.getVariants().all {
project.getVariants().configureEach {
lazyRegisterJavaGeneratingTask.invoke(it, taskProvider, listOf(outputDir.get().asFile))
}
} else {
Expand Down

0 comments on commit 0530f8d

Please sign in to comment.