/*
 * Copyright (C) 2018 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.LibraryGroups
import androidx.build.LibraryType

import static androidx.build.dependencies.DependenciesKt.*

plugins {
    id('AndroidXPlugin')
    id('java-library')
}

dependencies {
    api('androidx.annotation:annotation:1.1.0')
    implementation(JAVAPOET)

    // For testing, add in the compiled classes from appsearch to get access to annotations.
    testImplementation fileTree(
            dir: "${new File(project(":appsearch:appsearch").buildDir, "libJar")}",
            include : "*.jar"
    )
    testImplementation(GOOGLE_COMPILE_TESTING)
}

tasks.findByName('compileJava').dependsOn(":appsearch:appsearch:jarDebug")

androidx {
    name = 'AndroidX AppSearch Compiler'
    type = LibraryType.COMPILER_PLUGIN
    mavenGroup = LibraryGroups.APPSEARCH
    inceptionYear = '2019'
    description = 'Compiler for AndroidX AppSearch data classes'
    failOnDeprecationWarnings = false
}
