Skip to content

Commit

Permalink
add lint configurations
Browse files Browse the repository at this point in the history
  • Loading branch information
mohamadk committed Dec 19, 2023
1 parent 0f6c656 commit 4bae264
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.grab.grazel.bazel.rules

import com.grab.grazel.bazel.starlark.Assignee
import com.grab.grazel.bazel.starlark.BazelDependency
import com.grab.grazel.bazel.starlark.LintConfigs
import com.grab.grazel.bazel.starlark.StatementsBuilder
import com.grab.grazel.bazel.starlark.array
import com.grab.grazel.bazel.starlark.asString
Expand Down Expand Up @@ -137,7 +138,8 @@ internal fun StatementsBuilder.androidBinary(
deps: List<BazelDependency>,
assetsGlob: List<String> = emptyList(),
assetsDir: String? = null,
buildConfigData: BuildConfigData
buildConfigData: BuildConfigData,
lintConfigs: LintConfigs? = null,
) {
load("@$GRAB_BAZEL_COMMON//rules:defs.bzl", "android_binary")
rule("android_binary") {
Expand Down Expand Up @@ -180,6 +182,10 @@ internal fun StatementsBuilder.androidBinary(
if (!resValuesData.isEmpty) {
"res_values" `=` resValuesData.merged.toObject(quoteKeys = true, quoteValues = true)
}

if (lintConfigs?.merged?.isNotEmpty() == true) {
"lint_options" `=` lintConfigs.merged.toObject(quoteValues = true)
}
}
}

Expand All @@ -198,7 +204,8 @@ internal fun StatementsBuilder.androidLibrary(
assetsGlob: List<String> = emptyList(),
assetsDir: String? = null,
resValuesData: ResValuesData,
buildConfigData: BuildConfigData
buildConfigData: BuildConfigData,
lintConfigs: LintConfigs?
) {
load("@$GRAB_BAZEL_COMMON//rules:defs.bzl", "android_library")
rule("android_library") {
Expand Down Expand Up @@ -238,6 +245,10 @@ internal fun StatementsBuilder.androidLibrary(
if (!resValuesData.isEmpty) {
"res_values" `=` resValuesData.merged.toObject(quoteKeys = true, quoteValues = true)
}

if (lintConfigs?.merged?.isNotEmpty() == true) {
"lint_options" `=` lintConfigs.merged.toObject(quoteValues = true)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright 2023 Grabtaxi Holdings PTE LTD (GRAB)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.grab.grazel.bazel.starlark

data class LintConfigs(val configPath: String? = null, val baselinePath: String? = null) {
val merged: Map<String, String> = mapOf(
"config" to configPath,
"baseline" to baselinePath
).filterValues { it != null } as Map<String, String>
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package com.grab.grazel.migrate.android

import com.grab.grazel.bazel.rules.Multidex
import com.grab.grazel.bazel.starlark.BazelDependency
import com.grab.grazel.bazel.starlark.LintConfigs

internal interface AndroidData {
val name: String
Expand All @@ -39,6 +40,7 @@ internal interface AndroidData {
val compose: Boolean
val databinding: Boolean
val tags: List<String>
val lintConfigs: LintConfigs
}

internal data class AndroidLibraryData(
Expand All @@ -56,7 +58,8 @@ internal data class AndroidLibraryData(
override val plugins: List<BazelDependency> = emptyList(),
override val databinding: Boolean = false,
override val compose: Boolean = false,
override val tags: List<String> = emptyList()
override val tags: List<String> = emptyList(),
override val lintConfigs: LintConfigs,
) : AndroidData

internal data class AndroidBinaryData(
Expand All @@ -75,6 +78,7 @@ internal data class AndroidBinaryData(
override val databinding: Boolean = false,
override val compose: Boolean = false,
override val tags: List<String> = emptyList(),
override val lintConfigs: LintConfigs,
val manifestValues: Map<String, String?> = emptyMap(),
val multidex: Multidex = Multidex.Native,
val dexShards: Int? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ package com.grab.grazel.migrate.android

import com.android.build.gradle.BaseExtension
import com.android.build.gradle.api.AndroidSourceSet
import com.android.build.gradle.internal.dsl.LintOptions
import com.grab.grazel.GrazelExtension
import com.grab.grazel.bazel.rules.Multidex
import com.grab.grazel.bazel.starlark.BazelDependency
import com.grab.grazel.bazel.starlark.LintConfigs
import com.grab.grazel.gradle.ConfigurationScope.BUILD
import com.grab.grazel.gradle.dependencies.BuildGraphType
import com.grab.grazel.gradle.dependencies.DependenciesDataSource
Expand Down Expand Up @@ -126,6 +128,8 @@ constructor(
deps.calculateDirectDependencyTags(name)
} else emptyList()

val lintConfigs = lintConfigs(extension.lintOptions, project)

return AndroidLibraryData(
name = name + matchedVariant.nameSuffix,
srcs = srcs,
Expand All @@ -140,7 +144,8 @@ constructor(
buildConfigData = extension.extractBuildConfig(this, matchedVariant.variant),
resValuesData = extension.extractResValue(matchedVariant),
deps = deps.sorted(),
tags = tags.sorted()
tags = tags.sorted(),
lintConfigs = lintConfigs
)
}

Expand All @@ -158,6 +163,23 @@ constructor(
}
}

private fun lintConfigs(
lintOptions: LintOptions,
project: Project
): LintConfigs {
val configPath = if (lintOptions.lintConfig?.absolutePath != null) {
project.relativePath(lintOptions.lintConfig!!.absolutePath)
} else {
null
}
val baseLinePath = if (lintOptions.baselineFile?.absolutePath != null) {
project.relativePath(lintOptions.baselineFile!!.absolutePath)
} else {
null
}
return LintConfigs(configPath, baseLinePath)
}

internal interface AndroidBinaryDataExtractor : AndroidExtractor<AndroidBinaryData>

@Singleton
Expand Down Expand Up @@ -195,6 +217,8 @@ constructor(
.toList()
) ?: ""

val lintConfigs = lintConfigs(extension.lintOptions, project)

return AndroidBinaryData(
name = project.name,
manifestValues = manifestValues,
Expand All @@ -207,7 +231,8 @@ constructor(
packageName = matchedVariant.variant.applicationId,
hasCrashlytics = project.hasCrashlytics,
compose = project.hasCompose,
databinding = project.hasDatabinding
databinding = project.hasDatabinding,
lintConfigs = lintConfigs,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import com.grab.grazel.bazel.rules.Visibility
import com.grab.grazel.bazel.rules.androidBinary
import com.grab.grazel.bazel.rules.androidLibrary
import com.grab.grazel.bazel.starlark.BazelDependency
import com.grab.grazel.bazel.starlark.LintConfigs
import com.grab.grazel.bazel.starlark.StatementsBuilder
import com.grab.grazel.migrate.BazelBuildTarget

Expand All @@ -35,6 +36,7 @@ internal interface AndroidTarget : BazelBuildTarget {
val manifest: String?
val assetsGlob: List<String>
val assetsDir: String?
val lintConfigs: LintConfigs?
}

internal data class AndroidLibraryTarget(
Expand All @@ -54,6 +56,7 @@ internal data class AndroidLibraryTarget(
override val assetsGlob: List<String> = emptyList(),
override val assetsDir: String? = null,
override val sortKey: String = "0$name",
override val lintConfigs: LintConfigs? = null,
) : AndroidTarget {
override fun statements(builder: StatementsBuilder) = builder {
androidLibrary(
Expand All @@ -70,7 +73,8 @@ internal data class AndroidLibraryTarget(
assetsGlob = assetsGlob,
assetsDir = assetsDir,
buildConfigData = buildConfigData,
resValuesData = resValuesData
resValuesData = resValuesData,
lintConfigs = lintConfigs,
)
}
}
Expand All @@ -92,6 +96,7 @@ internal data class AndroidBinaryTarget(
override val assetsGlob: List<String> = emptyList(),
override val assetsDir: String? = null,
override val sortKey: String = "0$name",
override val lintConfigs: LintConfigs? = null,
val crunchPng: Boolean = false,
val multidex: Multidex = Multidex.Native,
val debug: Boolean = true,
Expand Down Expand Up @@ -122,6 +127,7 @@ internal data class AndroidBinaryTarget(
assetsGlob = assetsGlob,
buildConfigData = buildConfigData,
assetsDir = assetsDir,
lintConfigs = lintConfigs,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ constructor(
resValuesData = androidLibraryData.resValuesData,
assetsGlob = androidLibraryData.assets,
assetsDir = androidLibraryData.assetsDir,
buildConfigData = androidLibraryData.buildConfigData
buildConfigData = androidLibraryData.buildConfigData,
lintConfigs = androidLibraryData.lintConfigs,
)
) + intermediateTargets
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ private fun AndroidLibraryData.toAndroidLibTarget() = AndroidLibraryTarget(
manifest = manifestFile,
assetsGlob = assets,
assetsDir = assetsDir,
tags = tags
tags = tags,
lintConfigs = lintConfigs
)

0 comments on commit 4bae264

Please sign in to comment.