/*
 * 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")
    id("kotlin-android")
}

dependencies {
    api("androidx.lifecycle:lifecycle-runtime:2.2.0")
    api("androidx.arch.core:core-common:2.2.0")
    api("androidx.arch.core:core-runtime:2.2.0")
    api("androidx.fragment:fragment:1.2.0")
    api("androidx.lifecycle:lifecycle-common:2.2.0")
    api("androidx.lifecycle:lifecycle-livedata:2.2.0")
    api("androidx.lifecycle:lifecycle-process:2.2.0")
    api("androidx.lifecycle:lifecycle-service:2.2.0")
    api("androidx.lifecycle:lifecycle-viewmodel:2.2.0")

    testImplementation("androidx.arch.core:core-testing:2.2.0")
    testImplementation(libs.junit)
    testImplementation(libs.mockitoCore4)

    androidTestImplementation(libs.kotlinStdlib)
    androidTestImplementation(libs.truth)
    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.testRules)
    androidTestImplementation(libs.espressoCore)
    androidTestImplementation(libs.multidex)
    androidTestImplementation("androidx.appcompat:appcompat:1.1.0")
    androidTestImplementation(project(":internal-testutils-runtime"))
}

androidx {
    name = "Lifecycle Extensions"
    publish = Publish.NONE
    runApiTasks = new RunApiTasks.Yes("Need to track API surface before moving to publish")
    inceptionYear = "2017"
    description = "Android Lifecycle Extensions"
    failOnDeprecationWarnings = false
    metalavaK2UastEnabled = true
}

android {
    defaultConfig {
        multiDexEnabled true
    }
    namespace "androidx.lifecycle.extensions"
}
