plugins {
    id('com.android.application')
    id('com.getkeepsafe.dexcount')
    id('com.github.triplet.play') version '2.7.5' apply false
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        multiDexEnabled false
        vectorDrawables.useSupportLibrary true
        // Version code schema:
        // "1.2.3-SNAPSHOT" -> 1020300
        // "1.2.3-RC4"      -> 1020304
        // "1.2.3"          -> 1020395
        versionCode 2000001
        versionName "2.0.0-alpha1"
        testApplicationId "de.test.antennapod"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.generatedDensities = []

        def commit = "Unknown commit"
        try {
            commit = "git rev-parse --short HEAD".execute().text.trim()
        } catch (Exception ignore) {
        }
        buildConfigField "String", "COMMIT_HASH", ('"' + commit + '"')

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [eventBusIndex: 'de.danoeh.antennapod.ApEventBusIndex']
            }
        }
    }

    signingConfigs {
        releaseConfig {
            if (project.hasProperty("releaseStoreFile")) {
                storeFile file(releaseStoreFile)
            } else {
                storeFile file("keystore")
            }
            if (project.hasProperty("releaseStorePassword")) {
                storePassword releaseStorePassword
            } else {
                storePassword "password"
            }
            if (project.hasProperty("releaseKeyAlias")) {
                keyAlias releaseKeyAlias
            } else {
                keyAlias "alias"
            }
            if (project.hasProperty("releaseKeyPassword")) {
                keyPassword releaseKeyPassword
            } else {
                keyPassword "password"
            }
        }
    }

    buildTypes {
        def STRING = "String"

        debug {
            applicationIdSuffix ".debug"
            resValue "string", "provider_authority", "de.danoeh.antennapod.debug.provider"

            // debug build has method count over 64k single-dex threshold. 
            // For building debug build to use on Android < 21 (pre-Android 5) devices, 
            // you need to manually change class
            // de.danoeh.antennapod.PodcastApp to extend MultiDexApplication . 
            // See Issue #2813
            multiDexEnabled true

            dexcount {
                if (project.hasProperty("enableDexcountInDebug")) {
                    runOnEachPackage enableDexcountInDebug.toBoolean()
                } else { // default to not running dexcount
                    runOnEachPackage false
                }
            }
        }
        release {
            resValue "string", "provider_authority", "de.danoeh.antennapod.provider"
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), "proguard.cfg"
            signingConfig signingConfigs.releaseConfig
        }
    }

    packagingOptions {
        exclude "META-INF/LICENSE.txt"
        exclude "META-INF/NOTICE.txt"
    }

    lintOptions {
        abortOnError false
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    aaptOptions {
        additionalParameters "--no-version-vectors"
    }

    testOptions {
        animationsDisabled = true
    }

    flavorDimensions "market"
    productFlavors {
        free {
            dimension "market"
        }
        play {
            dimension "market"
        }
    }

    dexOptions {
        jumboMode true
    }
}

dependencies {
    freeImplementation project(":core")
    // free build hack: skip some dependencies
    if (!doFreeBuild()) {
        playImplementation project(":core")
    } else {
        System.out.println("app: free build hack, skipping some dependencies")
    }

    annotationProcessor 'androidx.annotation:annotation:1.1.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
    implementation 'androidx.gridlayout:gridlayout:1.0.0'
    implementation 'androidx.media:media:1.1.0'
    implementation 'androidx.preference:preference:1.1.1'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'androidx.viewpager2:viewpager2:1.0.0'
    implementation "androidx.work:work-runtime:$workManagerVersion"
    implementation 'com.google.android.material:material:1.1.0'

    compileOnly "com.google.android.wearable:wearable:$wearableSupportVersion"
    implementation "org.apache.commons:commons-lang3:$commonslangVersion"
    implementation "commons-io:commons-io:$commonsioVersion"
    implementation "org.jsoup:jsoup:$jsoupVersion"
    implementation "com.github.bumptech.glide:glide:$glideVersion"
    annotationProcessor "com.github.bumptech.glide:compiler:$glideVersion"
    implementation "com.squareup.okhttp3:okhttp:$okhttpVersion"
    implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion"
    implementation "com.squareup.okio:okio:$okioVersion"
    implementation "org.greenrobot:eventbus:$eventbusVersion"
    annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbusVersion"
    implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
    implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion"

    implementation "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion"
    implementation "com.joanzapata.iconify:android-iconify-material:$iconifyVersion"
    implementation "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion"
    implementation "com.github.shts:TriangleLabelView:$triangleLabelViewVersion"
    implementation 'com.leinardi.android:speed-dial:3.1.1'
    implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion"
    implementation 'com.github.mfietz:fyydlin:v0.5.0'
    implementation 'com.github.ByteHamster:SearchPreference:v2.0.0'

    androidTestImplementation "org.awaitility:awaitility:$awaitilityVersion"
    androidTestImplementation 'com.nanohttpd:nanohttpd:2.1.1'
    androidTestImplementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion"
    androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
    androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test:rules:1.2.0'
}

if (project.hasProperty("antennaPodServiceAccountEmail")) {
    apply plugin: 'com.github.triplet.play'
    play {
        track = 'alpha'
        serviceAccountEmail = antennaPodServiceAccountEmail
        serviceAccountCredentials = file(antennaPodPk12File)
    }
}

task copyLicense(type: Copy) {
    from "../LICENSE"
    into "src/main/assets/"
    rename { String fileName ->
        fileName + ".txt"
    }
    outputs.upToDateWhen { false }
}

preBuild.dependsOn copyLicense

apply plugin: 'de.timfreiheit.resourceplaceholders.plugin'
resourcePlaceholders {
    files = ['xml/shortcuts.xml']
}