/*
 * 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 static androidx.build.dependencies.DependenciesKt.*
import androidx.build.AndroidXExtension
import androidx.build.CompilationTarget
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.SdkHelperKt
import androidx.build.Publish

plugins {
    id("AndroidXPlugin")
    id("kotlin")
}

dependencies {
    // compileOnly because we use lintChecks and it doesn't allow other types of deps
    // this ugly hack exists because of b/63873667
    if (rootProject.hasProperty("android.injected.invoked.from.ide")) {
        compileOnly LINT_API_LATEST
    } else {
        compileOnly LINT_API_MIN
    }
    compileOnly KOTLIN_STDLIB

    testImplementation KOTLIN_STDLIB
    testImplementation LINT_CORE
    testImplementation LINT_TESTS
}

androidx {
    name = "Android Fragment-Testing Lint Checks"
    toolingProject = true
    publish = Publish.NONE
    mavenGroup = LibraryGroups.FRAGMENT
    inceptionYear = "2019"
    description = "Lint Checks for the Fragment Testing module"
    url = AndroidXExtension.ARCHITECTURE_URL
    compilationTarget = CompilationTarget.HOST
}
