/*
 * Copyright (C) 2017 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.Publish
import androidx.build.RunApiTasks

plugins {
    id("AndroidXPlugin")
    id("com.android.library")
}

dependencies {
    implementation(project(":slice:slice-core"))
    implementation("androidx.appcompat:appcompat:1.4.0")
    implementation("androidx.recyclerview:recyclerview:1.2.0-beta01")
    implementation("androidx.collection:collection:1.1.0")
    api("androidx.lifecycle:lifecycle-livedata-core:2.0.0")

    androidTestImplementation(project(":slice:slice-builders"))
    androidTestImplementation(project(":slice:slice-test"))
    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.testRules)
    androidTestImplementation(libs.espressoCore, excludes.espresso)
    androidTestImplementation(libs.mockitoCore4, excludes.bytebuddy)
    androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy)
}

androidx {
    name = "Slice Views"
    publish = Publish.SNAPSHOT_ONLY // Library is deprecated pending removal.
    runApiTasks = new RunApiTasks.Yes() // Pending removal, but keep API files for now.
    mavenVersion = LibraryVersions.SLICE
    inceptionYear = "2017"
    description = "A library that handles rendering of slice content into supported templates"
    failOnDeprecationWarnings = false

    deviceTests {
        // Pending removal, don't run tests.
        enabled = false
    }
}

android {
    namespace "androidx.slice.view"
}
