/*
 * Copyright (C) 2020 The Dagger Authors.
 *
 * 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.
 */

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.dagger.hilt.android'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.devtools.ksp'

android {
    compileSdkVersion 33
    buildToolsVersion "33.0.1"

    defaultConfig {
        applicationId "dagger.hilt.android.simpleKotlin"
        minSdkVersion 16
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "dagger.hilt.android.example.gradle.simpleKotlin.TestRunner"
    }
    namespace "dagger.hilt.android.simpleKotlin"
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
        }
    }
    flavorDimensions "tier", "processorConfig"
    productFlavors {
        free {
            dimension "tier"
        }
        pro {
            dimension "tier"
            matchingFallbacks = ["free"]
        }
        withKapt {
            dimension "processorConfig"
        }
        withKsp {
            dimension "processorConfig"
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
    testOptions {
        unitTests.includeAndroidResources = true
    }
    lintOptions {
        checkReleaseBuilds = false
    }
    sourceSets {
        String sharedTestDir = 'src/sharedTest/java'
        test {
            java.srcDirs += sharedTestDir
        }
        androidTest {
            java.srcDirs += sharedTestDir
        }
    }
}

kotlin {
    jvmToolchain(11)
}

hilt {
    enableTransformForLocalTests = true
    enableAggregatingTask = true
}

dependencies {
    implementation project(':android-library')
    implementation project(':kotlin-library')
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.activity:activity-ktx:1.5.0'

    implementation 'com.google.dagger:hilt-android:LOCAL-SNAPSHOT'
    kaptWithKapt 'com.google.dagger:hilt-compiler:LOCAL-SNAPSHOT'
    kspWithKsp 'com.google.dagger:hilt-compiler:LOCAL-SNAPSHOT'

    testImplementation 'androidx.test.ext:junit:1.1.3'
    testImplementation 'androidx.test:runner:1.4.0'
    testImplementation 'com.google.truth:truth:1.0.1'
    testImplementation 'junit:junit:4.13'
    testImplementation 'org.robolectric:robolectric:4.11.1'
    testImplementation 'androidx.core:core:1.3.2'
    // TODO(bcorso): This multidex dep shouldn't be required -- it's a dep for the generated code.
    testImplementation 'androidx.multidex:multidex:2.0.0'
    testImplementation 'com.google.dagger:hilt-android-testing:LOCAL-SNAPSHOT'
    kaptTestWithKapt 'com.google.dagger:hilt-compiler:LOCAL-SNAPSHOT'
    kspTestWithKsp 'com.google.dagger:hilt-compiler:LOCAL-SNAPSHOT'

    androidTestImplementation 'androidx.fragment:fragment-ktx:1.5.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test:runner:1.4.0'
    androidTestImplementation 'com.google.truth:truth:1.0.1'
    androidTestImplementation 'com.google.dagger:hilt-android-testing:LOCAL-SNAPSHOT'
    kaptAndroidTestWithKapt 'com.google.dagger:hilt-compiler:LOCAL-SNAPSHOT'
    kspAndroidTestWithKsp 'com.google.dagger:hilt-compiler:LOCAL-SNAPSHOT'
}
