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

dependencies {
    api("androidx.annotation:annotation:1.1.0")

    api("androidx.core:core:1.1.0")
    implementation("androidx.collection:collection:1.0.0")
    api("androidx.cursoradapter:cursoradapter:1.0.0")
    api("androidx.fragment:fragment:1.1.0-rc01")
    api(project(":appcompat:appcompat-resources"))
    api("androidx.drawerlayout:drawerlayout:1.0.0")

    androidTestImplementation(KOTLIN_STDLIB)
    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
    androidTestImplementation(ANDROIDX_TEST_CORE)
    androidTestImplementation(ANDROIDX_TEST_RUNNER)
    androidTestImplementation(ANDROIDX_TEST_RULES)
    androidTestImplementation(TRUTH)
    androidTestImplementation(ESPRESSO_CORE, libs.exclude_for_espresso)
    androidTestImplementation(MOCKITO_CORE, libs.exclude_bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation(DEXMAKER_MOCKITO, libs.exclude_bytebuddy) // DexMaker has it"s own MockMaker
    androidTestImplementation project(':internal-testutils-appcompat'), {
        exclude group: 'androidx.appcompat', module: 'appcompat'
        exclude group: 'androidx.core', module: 'core'
    }
}

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }
    defaultConfig {
        // This disables the builds tools automatic vector -> PNG generation
        generatedDensities = []
    }

    sourceSets {
        main.res.srcDirs 'res', 'res-public'
    }

    aaptOptions {
        additionalParameters "--no-version-vectors"
        noCompress 'ttf'
    }

    testOptions {
        animationsDisabled = true
    }

    buildTypes.all {
        consumerProguardFiles("proguard-rules.pro")
    }
}

androidx {
    name = "Android AppCompat Library v7"
    publish = Publish.SNAPSHOT_AND_RELEASE
    mavenVersion = LibraryVersions.APPCOMPAT
    mavenGroup = LibraryGroups.APPCOMPAT
    inceptionYear = "2011"
    description = "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren\'t a part of the framework APIs. Compatible on devices running API 14 or later."
    failOnDeprecationWarnings = false
    trackRestrictedAPIs = false
}
