/*
 * Copyright 2019 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
 *
 *      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.
 */

import androidx.build.CompilationTarget
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish
import androidx.build.SdkResourceGenerator

import static androidx.build.dependencies.DependenciesKt.*

plugins {
    id("AndroidXPlugin")
    id("kotlin")
    id("java-gradle-plugin")
}

SdkResourceGenerator.generateForHostTest(project)
apply from: "../../buildSrc/kotlin-dsl-dependency.gradle"

dependencies {
    implementation findGradleKotlinDsl()
    implementation gradleApi()
    implementation(AGP_STABLE)
    implementation(KOTLIN_STDLIB)
    implementation("gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.8")
    implementation("org.anarres.jarjar:jarjar-gradle:1.0.1")

    testImplementation(project(":internal-testutils-gradle-plugin"))
    testImplementation gradleTestKit()
    testImplementation(ANDROIDX_TEST_RUNNER)
    testImplementation(JUNIT)
    testImplementation(KOTLIN_TEST)
}

gradlePlugin {
    plugins {
        inspection {
            id = "androidx.inspection"
            implementationClass = "androidx.inspection.gradle.InspectionPlugin"
        }
    }
}

androidx {
    name = "Android Inspection Gradle Plugin"
    publish = Publish.NONE
    toolingProject = true
    mavenGroup = LibraryGroups.INSPECTION
    inceptionYear = "2019"
    description = "Android Inspection Gradle Plugin"
    compilationTarget = CompilationTarget.HOST
}
