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

plugins {
    id 'AndroidXPlugin'
    id 'kotlin'
    id 'java-gradle-plugin'
}

apply from: "../../buildSrc/kotlin-dsl-dependency.gradle"

dependencies {
    implementation(findGradleKotlinDsl())
    implementation(gradleApi())
    implementation(libs.androidGradlePluginApi)
    implementation(libs.androidGradlePluginz) // Needed for BaseExtension, see b/268237729.
    implementation(libs.androidToolsCommon)
    implementation(libs.androidToolsRepository)
    implementation(libs.androidToolsSdkCommon)
    implementation(libs.apacheCommonIo)
    implementation(libs.apacheAnt)
    implementation(libs.guava)
    implementation(libs.kotlinStdlib)

    testImplementation(gradleTestKit())
    testImplementation(project(":internal-testutils-gradle-plugin"))
    testImplementation(libs.androidToolsAnalyticsProtos)
    testImplementation(libs.gson)
    testImplementation(libs.junit)
    testImplementation(libs.kotlinTest)
    testImplementation(libs.truth)
}

SdkResourceGenerator.generateForHostTest(project)

gradlePlugin {
    plugins {
        stableAidl {
            id = "androidx.stableaidl"
            implementationClass = "androidx.stableaidl.StableAidlPlugin"
        }
    }
}

androidx {
    name = "Stable AIDL Gradle Plugin"
    type = LibraryType.GRADLE_PLUGIN
    inceptionYear = "2022"
    description = "Stable AIDL Gradle Plugin"
}

tasks {
    validatePlugins {
        failOnWarning.set(true)
        enableStricterValidation.set(true)
    }
}
