Skip to content

Commit

Permalink
collect maven custom lint rules
Browse files Browse the repository at this point in the history
  • Loading branch information
mohammadkahelghi-grabtaxi committed May 9, 2024
1 parent d4df4ac commit 7aabfdd
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.grab.grazel.gradle.variant.Classpath.Runtime
import com.grab.grazel.gradle.variant.VariantType.AndroidBuild
import com.grab.grazel.gradle.variant.VariantType.AndroidTest
import com.grab.grazel.gradle.variant.VariantType.JvmBuild
import com.grab.grazel.gradle.variant.VariantType.Lint
import com.grab.grazel.gradle.variant.VariantType.Test
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
Expand Down Expand Up @@ -94,6 +95,7 @@ abstract class AndroidNonVariant<T>(
get() = backingVariant.name + when (variantType) {
AndroidTest -> AndroidTest.name
Test -> Test.name
Lint -> Lint.name
else -> ""
}

Expand Down Expand Up @@ -200,6 +202,7 @@ data class DefaultVariantData(
val name: String = when (variantType) {
AndroidBuild -> DEFAULT_VARIANT
AndroidTest -> ANDROID_TEST_VARIANT
Lint -> LINT_VARIANT
else -> TEST_VARIANT
},
)
Expand Down Expand Up @@ -241,6 +244,7 @@ class AndroidDefaultVariant(
AndroidBuild -> !configName.isTest()
AndroidTest -> configName.isAndroidTest()
Test -> configName.isUnitTest()
Lint -> configName.isLint()
JvmBuild -> error("Invalid variant type ${JvmBuild.name} for Android variant")
}
}.toSet()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.grab.grazel.gradle.hasKapt
import com.grab.grazel.gradle.variant.VariantType.AndroidBuild
import com.grab.grazel.gradle.variant.VariantType.AndroidTest
import com.grab.grazel.gradle.variant.VariantType.JvmBuild
import com.grab.grazel.gradle.variant.VariantType.Lint
import com.grab.grazel.gradle.variant.VariantType.Test
import com.grab.grazel.util.addTo
import org.gradle.api.artifacts.Configuration
Expand Down Expand Up @@ -78,6 +79,7 @@ interface ConfigurationParsingVariant<T> : Variant<T> {
AndroidBuild -> configName.startsWith("kapt${namePattern.capitalize()}")
AndroidTest -> configName.startsWith("kaptAndroidTest${basePattern.capitalize()}")
Test -> configName.startsWith("kaptTest${basePattern.capitalize()}")
VariantType.Lint -> false
JvmBuild -> error("Invalid variant type ${JvmBuild.name} for Android variant")
}
}.addTo(this)
Expand Down Expand Up @@ -106,6 +108,8 @@ interface ConfigurationParsingVariant<T> : Variant<T> {
Test -> configName == "test${basePattern}${onlyConfig}$dm".toLowerCase()
|| configName == "test${basePattern}Implementation$dm".toLowerCase()

Lint -> configName == "lintChecks".toLowerCase()

else -> error("$JvmBuild invalid for build type runtime configuration")
}
}.toSet()
Expand All @@ -118,5 +122,7 @@ interface ConfigurationParsingVariant<T> : Variant<T> {
|| startsWith("kaptTest")
|| contains("UnitTest")

fun String.isLint() = startsWith("lintChecks")

fun String.isTest() = isAndroidTest() || isUnitTest() || contains("Test")
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.grab.grazel.gradle.isAndroid
import com.grab.grazel.gradle.variant.VariantType.AndroidBuild
import com.grab.grazel.gradle.variant.VariantType.AndroidTest
import com.grab.grazel.gradle.variant.VariantType.JvmBuild
import com.grab.grazel.gradle.variant.VariantType.Lint
import com.grab.grazel.gradle.variant.VariantType.Test
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
Expand Down Expand Up @@ -66,18 +67,23 @@ enum class DefaultVariants(val variantName: String) {
},
AndroidTest("androidTest") {
override fun toString() = variantName
},
Lint("lint") {
override fun toString() = variantName
}
}

val DEFAULT_VARIANT = DefaultVariants.Default.toString()
val TEST_VARIANT = DefaultVariants.Test.toString()
val ANDROID_TEST_VARIANT = DefaultVariants.AndroidTest.toString()
val LINT_VARIANT = DefaultVariants.Lint.toString()

enum class VariantType {
AndroidBuild,
AndroidTest,
Test,
JvmBuild,
Lint,
}

fun BaseVariant.toVariantType(): VariantType = when (this) {
Expand Down Expand Up @@ -134,6 +140,7 @@ class JvmVariantData(
val variantType: VariantType,
val name: String = when (variantType) {
JvmBuild -> DEFAULT_VARIANT
Lint -> LINT_VARIANT
else -> TEST_VARIANT
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.grab.grazel.gradle.isJvm
import com.grab.grazel.gradle.variant.VariantType.AndroidBuild
import com.grab.grazel.gradle.variant.VariantType.AndroidTest
import com.grab.grazel.gradle.variant.VariantType.JvmBuild
import com.grab.grazel.gradle.variant.VariantType.Lint
import com.grab.grazel.gradle.variant.VariantType.Test
import org.gradle.api.Project
import java.util.concurrent.ConcurrentHashMap
Expand Down Expand Up @@ -66,6 +67,11 @@ constructor(
project = project,
variantType = AndroidTest,
ignoreKeywords = flavorsBuildTypes
),
AndroidDefaultVariant(
project = project,
variantType = VariantType.Lint,
ignoreKeywords = flavorsBuildTypes
)
)

Expand Down Expand Up @@ -139,6 +145,13 @@ constructor(
ignoreKeywords = flavorsBuildTypes
)
)
action(
AndroidDefaultVariant(
project = project,
variantType = Lint,
ignoreKeywords = flavorsBuildTypes
)
)

variantDataSource.migratableVariants(project) { variant ->
action(AndroidVariant(project, variant))
Expand All @@ -153,7 +166,7 @@ constructor(
.asSequence()
.flatMap { buildType ->
VariantType.values()
.filter { it != JvmBuild }
.filter { it != JvmBuild && it != Lint }
.map { variantType ->
AndroidBuildType(
project = project,
Expand All @@ -168,7 +181,7 @@ constructor(
VariantType
.values()
.asSequence()
.filter { it != JvmBuild }
.filter { it != JvmBuild && it != Lint }
.flatMap { variantType ->
flavors.map { flavor ->
AndroidFlavor(
Expand All @@ -183,6 +196,7 @@ constructor(
} else if (project.isJvm) {
action(JvmVariant(project = project, variantType = JvmBuild))
action(JvmVariant(project = project, variantType = Test))
action(JvmVariant(project = project, variantType = Lint))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ data class LintConfigData(
val baselinePath: String? = null,
val lintChecks: List<BazelDependency>? = null
) {

private fun lintChecksString(): String? {
if (lintChecks.isNullOrEmpty()) return null
return "[" + lintChecks.joinToString(",") {
if (it is BazelDependency.StringDependency) {
"\"//$it\""
} else {
"\"${it}\""
}
} + "]"
}

val merged: List<StarlarkMapEntry> = listOf(
StarlarkMapEntry(
name = "enabled",
Expand All @@ -47,14 +59,7 @@ data class LintConfigData(
quoteValues = true
),
StarlarkMapEntry(
name = "lint_checks",
value = if (lintChecks != null) {
"[${lintChecks.joinToString(",", transform = BazelDependency::quote)}]"
} else {
null
},
quoteKeys = true,
quoteValues = false
name = "lint_checks", value = lintChecksString(), quoteKeys = true, quoteValues = false
)
).filter { it.value != null }
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,18 @@ import org.gradle.api.Project
import org.gradle.api.artifacts.ProjectDependency
import org.gradle.kotlin.dsl.the

internal fun Project.customLintRulesTargets(): List<BazelDependency>? {
return configurations
.asSequence()
.filter { it.name.contains("lintChecks") }
fun Project.customLintRulesTargets(): List<BazelDependency>? {
return configurations.asSequence().filter { it.name.contains("lintChecks") }
.flatMap { lintChecksConfig ->
lintChecksConfig
.dependencies
.asSequence()
.filterIsInstance<ProjectDependency>()
.map { BazelDependency.ProjectDependency(it.dependencyProject) }
.map {
if (it is ProjectDependency) {
BazelDependency.ProjectDependency(it.dependencyProject)
} else {
BazelDependency.MavenDependency(group = it.group!!, name = it.name, repo = "lint_maven")
} }
}.let { it.toList().ifEmpty { null } }
}

Expand Down
15 changes: 8 additions & 7 deletions keystore/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
filegroup(
name = "debug-keystore",
srcs = [
"debug.keystore",
],
visibility = [
"//visibility:public",
],
name = "debug-keystore",
srcs = [
"debug.keystore",
],
visibility = [
"//visibility:public",
]
)

16 changes: 16 additions & 0 deletions sample-android-library/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ android_library(
"config": "//:lint.xml",
},
manifest = "src/main/AndroidManifest.xml",
resources = {
"src/main/res": {
},
},
visibility = [
"//visibility:public",
],
Expand All @@ -32,6 +36,10 @@ android_library(
"config": "//:lint.xml",
},
manifest = "src/main/AndroidManifest.xml",
resources = {
"src/main/res": {
},
},
visibility = [
"//visibility:public",
],
Expand All @@ -52,6 +60,10 @@ android_library(
"config": "//:lint.xml",
},
manifest = "src/main/AndroidManifest.xml",
resources = {
"src/main/res": {
},
},
visibility = [
"//visibility:public",
],
Expand All @@ -72,6 +84,10 @@ android_library(
"config": "//:lint.xml",
},
manifest = "src/main/AndroidManifest.xml",
resources = {
"src/main/res": {
},
},
visibility = [
"//visibility:public",
],
Expand Down

0 comments on commit 7aabfdd

Please sign in to comment.