import static androidx.build.dependencies.DependenciesKt.*
import androidx.build.LibraryGroups
import androidx.build.LibraryVersions
import androidx.build.Publish

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

dependencies {
    api("androidx.annotation:annotation:1.1.0")
    api("androidx.appcompat:appcompat:1.1.0")
    api("androidx.core:core:1.1.0")
    api("androidx.fragment:fragment:1.1.0")
    api(project(":lifecycle:lifecycle-viewmodel"))

    testImplementation(ANDROIDX_TEST_CORE)
    testImplementation(ANDROIDX_TEST_RUNNER)
    testImplementation(JUNIT)
    testImplementation(MOCKITO_CORE)
    testImplementation(ROBOLECTRIC)
    testImplementation(TRUTH)

    androidTestImplementation(ANDROIDX_TEST_CORE)
    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
    androidTestImplementation(ANDROIDX_TEST_RULES)
    androidTestImplementation(ANDROIDX_TEST_RUNNER)
    androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy)
    androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy)
    androidTestImplementation(TRUTH)
}

android {
    sourceSets {
        main.res.srcDirs 'res'
    }

    aaptOptions {
        noCompress 'ttf'
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

androidx {
    name = "Biometric"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenVersion = LibraryVersions.BIOMETRIC
    mavenGroup = LibraryGroups.BIOMETRIC
    inceptionYear = "2018"
    description = "The Biometric library is a static library that you can add to your Android application. It invokes BiometricPrompt on devices running P and greater, and on older devices will show a compat dialog. Compatible on devices running API 14 or later."
}
