/*
 * Copyright 2021 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")
    id("kotlin-kapt")
    id("AndroidXComposePlugin")
    id("dagger.hilt.android.plugin")
}

android {
    defaultConfig {
        testInstrumentationRunner "androidx.hilt.navigation.compose.TestRunner"
    }
    namespace "androidx.hilt.navigation.compose"
}

dependencies {

    implementation(libs.kotlinStdlib)
    api projectOrArtifact(":hilt:hilt-navigation")
    api("androidx.compose.runtime:runtime:1.0.1")
    api("androidx.compose.ui:ui:1.0.1")
    api("androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1")
    api("androidx.navigation:navigation-compose:2.5.1")

    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.testRules)
    androidTestImplementation(libs.truth)
    androidTestImplementation(libs.hiltAndroid)
    androidTestImplementation(libs.hiltAndroidTesting)
    kaptAndroidTest(libs.hiltCompiler)
    androidTestImplementation projectOrArtifact(":compose:material:material")
    androidTestImplementation projectOrArtifact(":compose:test-utils")

    samples(projectOrArtifact(":hilt:hilt-navigation-compose-samples"))
}

hilt {
    enableAggregatingTask = true
}

androidx {
    name = "Navigation Compose Hilt Integration"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenVersion = LibraryVersions.HILT_NAVIGATION_COMPOSE
    mavenGroup = LibraryGroups.HILT
    inceptionYear = "2021"
    description = "Navigation Compose Hilt Integration"
    runApiTasks = new RunApiTasks.Yes()
    legacyDisableKotlinStrictApiMode = true
}
