import kau.Dependencies
import kau.Versions

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-parcelize'
//apply plugin: 'com.getkeepsafe.dexcount'
group = "ca.allanwang"

android {
    compileSdkVersion Versions.targetSdk

    androidGitVersion {
        codeFormat = 'MMNNPPXX'
        format = '%tag%%.count%%-commit%'
    }

    def kauMinSdk = Versions.minSdk
    if (project.hasProperty('kauSubModuleMinSdk'))
        kauMinSdk = kauSubModuleMinSdk

    def kauResourcePrefix = "kau_"
    if (project.hasProperty('kauSubModuleResourcePrefix'))
        kauResourcePrefix = kauSubModuleResourcePrefix

    resourcePrefix kauResourcePrefix

    defaultConfig {
        minSdkVersion kauMinSdk
        targetSdkVersion Versions.targetSdk
        versionName androidGitVersion.name()
        versionCode androidGitVersion.code()
        consumerProguardFiles 'progress-proguard.txt'
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildFeatures {
        viewBinding = true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        // warningsAsErrors true
        disable 'UnusedResources',
                'ContentDescription',
                'RtlSymmetry',
                'RtlHardcoded',
                'RtlEnabled',
                'Overdraw',
                'MissingTranslation',
                'MissingQuantity',
                'UnspecifiedImmutableFlag',
                'QueryPermissionsNeeded',
                'AnnotateVersionCheck',
                'Recycle',
                'MissingSuperCall',
                'UnsafeExperimentalUsageError',
                'UnsafeExperimentalUsageWarning'

        abortOnError false
        xmlReport false
        textReport true
        textOutput 'stdout'
    }

    packagingOptions {
        pickFirst 'META-INF/core_release.kotlin_module'
        pickFirst 'META-INF/library_release.kotlin_module'
        pickFirst 'META-INF/library-core_release.kotlin_module'
        exclude "**/module-info.class"
    }

    compileOptions {
        sourceCompatibility Versions.java
        targetCompatibility Versions.java
    }

    kotlinOptions {
        jvmTarget = Versions.java.toString()
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
        test.java.srcDirs += 'src/test/kotlin'
        androidTest.java.srcDirs += 'src/androidTest/kotlin'
        main.res.srcDirs += 'src/main/res-public'
    }

    testOptions.unitTests {
        // Don't throw runtime exceptions for android calls that are not mocked
        returnDefaultValues = true

        // Always show the result of every unit test, even if it passes.
        all {
            testLogging {
                events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
            }
        }
    }
}

dependencies {
    testImplementation Dependencies.kotlinTest
    testImplementation Dependencies.junit

    androidTestImplementation Dependencies.kotlinTest
    androidTestImplementation Dependencies.espresso
    androidTestImplementation Dependencies.testRules
    androidTestImplementation Dependencies.testRunner
}