buildscript {
    ext.versions = [
            kotlin: '1.5.31'
    ]

    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.3'
        classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: "kotlin-kapt"

android {

    compileSdk = 31
    defaultConfig {
        archivesBaseName = 'droidify'
        applicationId = 'com.looker.droidify'
        minSdk = 21
        targetSdk = 31
        versionCode = 35
        versionName = "0.3.5"
    }

    sourceSets.all {
        def javaDir = it.java.srcDirs.find { it.name == 'java' }
        it.java.srcDirs += new File(javaDir.parentFile, 'kotlin')
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = compileOptions.sourceCompatibility.toString()
    }

    buildTypes {
        debug {
            minifyEnabled = false
            shrinkResources = false
            applicationIdSuffix = ".debug"
            versionNameSuffix = "-debug"
        }
        release {
            minifyEnabled = true
            shrinkResources = true
        }
        all {
            crunchPngs = false
            proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard.pro")
        }
    }

    lintOptions {
        warning 'InvalidPackage'
        ignore 'InvalidVectorPath'
    }

    packagingOptions {
        exclude '/DebugProbesKt.bin'
        exclude '/kotlin/**.kotlin_builtins'
        exclude '/kotlin/**.kotlin_metadata'
        exclude '/META-INF/**.kotlin_module'
        exclude '/META-INF/**.pro'
        exclude '/META-INF/**.version'
        exclude '/okhttp3/internal/publicsuffix/*'
    }

    def keystorePropertiesFile = rootProject.file('keystore.properties')
    buildFeatures {
        viewBinding true
    }
    if (keystorePropertiesFile.exists()) {
        def keystoreProperties = new Properties()
        keystoreProperties.load(keystorePropertiesFile.newDataInputStream())

        def signing = [
                storeFile    : keystoreProperties['store.file'],
                storePassword: keystoreProperties['store.password'],
                keyAlias     : keystoreProperties['key.alias'],
                keyPassword  : keystoreProperties['key.password']
        ]

        if (!signing.any { _, v -> v == null }) {
            signingConfigs {
                primary {
                    storeFile = file(signing.storeFile)
                    storePassword = signing.storePassword
                    keyAlias = signing.keyAlias
                    keyPassword = signing.keyPassword
                    v2SigningEnabled = false
                }
            }

            buildTypes {
                debug.signingConfig = signingConfigs.primary
                release.signingConfig = signingConfigs.primary
            }
        }
    }
}

repositories {
    google()
    mavenCentral()
    maven { url "https://jitpack.io" }
}

dependencies {
    // Frontend
    implementation 'androidx.appcompat:appcompat:1.4.0-beta01'
    implementation 'androidx.viewpager2:viewpager2:1.0.0'
    implementation 'androidx.fragment:fragment-ktx:1.4.0-alpha10'
    implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
    implementation 'com.google.android.material:material:1.5.0-alpha04'

    // Backend
    implementation 'io.coil-kt:coil:1.4.0'
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'io.reactivex.rxjava3:rxjava:3.1.1'
    implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.13.0'
    implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2'
    implementation 'com.github.topjohnwu.libsu:core:3.1.2'
    implementation 'androidx.room:room-runtime:2.3.0'
    implementation 'androidx.room:room-ktx:2.3.0'
    kapt 'androidx.room:room-compiler:2.3.0'
}
