Merge pull request #1631 from oas004/feature/permission-lint-kts

[Permissions-Lint] Migrate gradle file to Kotlin DSL
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 2e61942..eddac9f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -17,6 +17,7 @@
 okhttp = "3.12.13"
 coil = "1.3.2"
 
+androidlint = "25.3.0"
 androidxtest = "1.4.0"
 androidxnavigation = "2.7.0-alpha01"
 androidxWindow = "1.0.0"
@@ -107,6 +108,7 @@
 android-application = { id = "com.android.application", version.ref = "gradlePlugin" }
 android-kotlin = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
 android-library = { id = "com.android.library", version.ref = "gradlePlugin" }
+android-lint = { id = "com.android.lint", version.ref = "androidlint"}
 jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
 gradle-metalava = { id = "me.tylerbwong.gradle.metalava", version.ref = "metalava" }
 vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktechPublish" }
diff --git a/permissions-lint/build.gradle b/permissions-lint/build.gradle
deleted file mode 100644
index e8db407..0000000
--- a/permissions-lint/build.gradle
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * 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
- *
- *      https://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.
- */
-
-plugins {
-    id 'java-library'
-    id 'kotlin'
-    id 'org.jetbrains.dokka'
-    id 'com.android.lint'
-}
-
-kotlin {
-    explicitApi()
-}
-
-lintOptions {
-    htmlReport true
-    htmlOutput file("lint-report.html")
-    textReport true
-    absolutePaths false
-    ignoreTestSources true
-}
-
-affectedTestConfiguration {
-    jvmTestTask = "test"
-}
-
-/**
- * Creates a configuration for users to use that will be used bundle these dependency
- * jars inside of this lint check's jar. This is required because lintPublish does
- * not currently support dependencies, so instead we need to bundle any dependencies with the
- * lint jar manually. (b/182319899)
- */
-def bundle = configurations.create("bundleInside")
-// bundleInside dependencies should be included as compileOnly and testImplementation as well
-configurations.getByName("compileOnly").setExtendsFrom([bundle])
-configurations.getByName("testImplementation").setExtendsFrom([bundle])
-tasks.named("jar").configure { task ->
-    def jarTask = task as Jar
-    jarTask.dependsOn(bundle)
-    jarTask.from({
-        bundle
-                // The stdlib is already bundled with lint, so no need to include it manually
-                // in the lint.jar if any dependencies here depend on it
-                .filter { !it.name.contains("kotlin-stdlib") }
-                .collect { file ->
-                    if (file.isDirectory()) {
-                        file
-                    } else {
-                        zipTree(file)
-                    }
-                }
-    })
-}
-
-dependencies {
-    // Bundle metadataJvm inside the Jar
-    bundleInside libs.kotlin.metadataJvm
-
-    compileOnly libs.android.tools.lint.api
-    compileOnly libs.kotlin.reflect
-    compileOnly libs.kotlin.stdlib
-    compileOnly libs.kotlin.stdlibJdk8 // Override version from transitive dependencies
-
-    testImplementation libs.junit
-    testImplementation libs.kotlin.reflect
-    testImplementation libs.kotlin.stdlib
-    testImplementation libs.kotlin.stdlibJdk8 // Override version from transitive dependencies
-    testImplementation libs.android.tools.lint.lint
-    testImplementation libs.android.tools.lint.tests
-}
-
-java {
-    sourceCompatibility = JavaVersion.VERSION_1_8
-    targetCompatibility = JavaVersion.VERSION_1_8
-}
\ No newline at end of file
diff --git a/permissions-lint/build.gradle.kts b/permissions-lint/build.gradle.kts
new file mode 100644
index 0000000..fa7376d
--- /dev/null
+++ b/permissions-lint/build.gradle.kts
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * 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
+ *
+ *      https://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.
+ */
+
+plugins {
+    `java-library`
+    id("kotlin")
+    id(libs.plugins.jetbrains.dokka.get().pluginId)
+    id(libs.plugins.android.lint.get().pluginId)
+}
+
+kotlin {
+    explicitApi()
+}
+
+lint {
+    htmlReport = true
+    htmlOutput = file("lint-report.html")
+    textReport = true
+    absolutePaths = false
+    ignoreTestSources = true
+}
+
+affectedTestConfiguration {
+    jvmTestTask = "test"
+}
+
+/**
+ * Creates a configuration for users to use that will be used bundle these dependency
+ * jars inside of this lint check's jar. This is required because lintPublish does
+ * not currently support dependencies, so instead we need to bundle any dependencies with the
+ * lint jar manually. (b/182319899)
+ */
+val bundleInside: Configuration = configurations.create("bundleInside")
+// bundleInside dependencies should be included as compileOnly and testImplementation as well
+configurations.getByName("compileOnly").setExtendsFrom(setOf(bundleInside))
+configurations.getByName("testImplementation").setExtendsFrom(setOf(bundleInside))
+
+tasks.getByName<Jar>("jar") {
+    this.dependsOn(bundleInside)
+    this.from({
+       bundleInside
+               // The stdlib is already bundled with lint, so no need to include it manually
+               // in the lint.jar if any dependencies here depend on it
+               .filter { !it.name.contains("kotlin-stdlib") }
+               .map { file ->
+                   if (file.isDirectory) {
+                       file
+                   } else {
+                       zipTree(file)
+                   }
+               }
+   })
+}
+
+dependencies {
+    // Bundle metadataJvm inside the Jar
+    bundleInside(libs.kotlin.metadataJvm)
+
+    compileOnly(libs.android.tools.lint.api)
+    compileOnly(libs.kotlin.reflect)
+    compileOnly(libs.kotlin.stdlib)
+    compileOnly(libs.kotlin.stdlibJdk8) // Override version from transitive dependencies
+
+    testImplementation(libs.junit)
+    testImplementation(libs.kotlin.reflect)
+    testImplementation(libs.kotlin.stdlib)
+    testImplementation(libs.kotlin.stdlibJdk8) // Override version from transitive dependencies
+    testImplementation(libs.android.tools.lint.lint)
+    testImplementation(libs.android.tools.lint.tests)
+}
+
+java {
+    sourceCompatibility = JavaVersion.VERSION_1_8
+    targetCompatibility = JavaVersion.VERSION_1_8
+}
\ No newline at end of file