import java.util.regex.Matcher
import java.util.regex.Pattern

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'androidx.navigation.safeargs.kotlin'
}
def flavor
android {
    compileSdk 34

    defaultConfig {
        minSdk 21
        targetSdk 34
        versionCode 512
        versionName "3.28-beta-1"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "default"
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            applicationIdSuffix '.debug'
            pseudoLocalesEnabled true
        }
    }
    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    productFlavors {
        fdroid {
            applicationId "fr.gouv.etalab.mastodon"
            buildConfigField "boolean", "DONATIONS", "true"
            buildConfigField "boolean", "push", "false"
            flavor = "fdroid"
        }
        playstore {
            applicationId "app.fedilab.android"
            buildConfigField "boolean", "DONATIONS", "false"
            buildConfigField "boolean", "push", "true"
            flavor = "playstore"
        }
    }
    buildFeatures {
        viewBinding true
    }
    sourceSets {
        playstore {
            manifest.srcFile "src/playstore/AndroidManifest.xml"
            java.srcDirs = ['src/main/java', 'src/playstore/java']
            res.srcDirs = ['src/main/res', 'src/playstore/res']
        }
        fdroid {
            java.srcDirs = ['src/main/java', 'src/fdroid/java']
            res.srcDirs = ['src/main/res', 'src/fdroid/res']
        }
        main {
            res.srcDirs = [
                    'src/main/res/layouts/mastodon',
                    'src/main/res/layouts/peertube',
                    'src/main/res/layouts',

                    'src/main/res/drawables/mastodon',
                    'src/main/res/drawables/peertube',
                    'src/main/res/drawables',

                    'src/main/res/menus/mastodon',
                    'src/main/res/menus/peertube',
                    'src/main/res/menus',

                    'src/main/res/values',

                    'src/main/res'
            ]
        }
    }
    configurations {
        cleanedAnnotations
        implementation.exclude group: 'org.jetbrains', module: 'annotations'
        all {
            exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx'
        }
    }
    namespace 'app.fedilab.android'
    lint {
        abortOnError false
        checkReleaseBuilds false
    }
}
allprojects {
    repositories {
        mavenLocal()
        maven { url "https://jitpack.io" }
    }
}
dependencies {

    implementation 'androidx.appcompat:appcompat:1.6.1'

    implementation 'com.google.android.material:material:1.10.0'


    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation "com.google.code.gson:gson:2.9.1"
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.squareup.retrofit2:converter-simplexml:2.9.0'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
    implementation 'androidx.preference:preference:1.2.1'
    implementation "org.conscrypt:conscrypt-android:2.5.2"
    implementation 'com.vanniktech:emoji-one:0.6.0'
    implementation 'com.github.GrenderG:Toasty:1.5.2'
    implementation "com.github.bumptech.glide:glide:4.14.2"
    implementation "com.github.bumptech.glide:okhttp3-integration:4.14.2"
    implementation("com.github.bumptech.glide:recyclerview-integration:4.14.2") {
        // Excludes the support library because it's already included by Glide.
        transitive = false
    }

    implementation "org.jsoup:jsoup:1.15.1"
    implementation 'com.github.mergehez:ArgPlayer:v3.1'

    implementation project(':autoimageslider')
    implementation project(path: ':mytransl')
    implementation project(path: ':ratethisapp')
    implementation project(path: ':sparkbutton')
    implementation project(path: ':colorPicker')
    implementation project(path: ':mathjaxandroid')
    implementation project(path: ':doubletapplayerview')

    implementation 'com.burhanrashid52:photoeditor:1.5.1'
    implementation("com.vanniktech:android-image-cropper:4.3.3")
    annotationProcessor "com.github.bumptech.glide:compiler:4.12.0"
    implementation 'jp.wasabeef:glide-transformations:4.3.0'
    implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.23.0'
    implementation 'androidx.media3:media3-exoplayer-hls:1.2.1'
    implementation "androidx.media3:media3-exoplayer:1.2.1"
    implementation "androidx.media3:media3-exoplayer-dash:1.2.1"
    implementation "androidx.media3:media3-ui:1.2.1"
    implementation "androidx.media3:media3-session:1.2.1"


    implementation "androidx.viewpager2:viewpager2:1.0.0"
    implementation 'com.github.piasy:rxandroidaudio:1.7.0'
    implementation 'com.github.piasy:AudioProcessor:1.7.0'
    implementation "androidx.work:work-runtime:2.9.0"
    implementation 'app.futured.hauler:hauler:5.0.0'
    implementation "com.github.chrisbanes:PhotoView:2.3.0"
    implementation "ch.acra:acra-mail:5.11.3"
    implementation "ch.acra:acra-limiter:5.11.3"
    implementation "ch.acra:acra-dialog:5.11.3"
    implementation "com.madgag.spongycastle:bctls-jdk15on:1.58.0.0"
    implementation 'com.github.UnifiedPush:android-connector:2.2.0'
   // implementation 'com.github.UnifiedPush:android-foss_embedded_fcm_distributor:1.0.0-beta1'
    playstoreImplementation('com.github.UnifiedPush:android-embedded_fcm_distributor:2.2.0') {
        exclude group: 'com.google.firebase', module: 'firebase-core'
        exclude group: 'com.google.firebase', module: 'firebase-analytics'
        exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
    }
    implementation 'com.burhanrashid52:photoeditor:1.5.1'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
    implementation 'androidx.lifecycle:lifecycle-livedata:2.6.2'
    implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
    implementation 'androidx.navigation:navigation-fragment:2.7.5'
    implementation 'androidx.navigation:navigation-ui:2.7.5'
    testImplementation 'junit:junit:'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    // debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8.1'
    implementation 'com.r0adkll:slidableactivity:2.1.0'
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'

    implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
    implementation "androidx.fragment:fragment:1.6.2"
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
    implementation 'androidx.browser:browser:1.7.0'
    implementation 'androidx.documentfile:documentfile:1.0.1'
    implementation 'com.github.amoskorir:avatarimagegenerator:1.5.0'

    implementation "com.github.mabbas007:TagsEditText:1.0.5"
    implementation "net.gotev:uploadservice:4.9.2"
    implementation "net.gotev:uploadservice-okhttp:4.9.2"
    implementation 'androidx.media:media:1.7.0'
    implementation 'com.github.mancj:MaterialSearchBar:0.8.5'



    implementation 'io.noties.markwon:core:4.6.2'
    implementation 'io.noties.markwon:ext-tables:4.6.2'
    implementation 'io.noties.markwon:syntax-highlight:4.6.2'
    implementation 'io.noties.markwon:ext-strikethrough:4.6.2'
    implementation 'io.noties.markwon:inline-parser:4.6.2'
    annotationProcessor 'io.noties:prism4j-bundler:2.0.0'

    //************ CAST **************///

    //---> Google libs (google_full)
    playstoreImplementation "com.google.android.gms:play-services-cast-tv:21.0.1"
    playstoreImplementation "com.google.android.gms:play-services-cast:21.4.0"
    playstoreImplementation "androidx.mediarouter:mediarouter:1.6.0"
    playstoreImplementation 'com.google.android.gms:play-services-cast-framework:21.4.0'


    //----> Other flavors
    fdroidImplementation 'su.litvak.chromecast:api-v2:0.11.3'
    fdroidImplementation 'com.fasterxml.jackson.core:jackson-core:2.12.0'
    fdroidImplementation 'org.slf4j:slf4j-simple:1.7.30'

}
def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
    println("tskReqStr:" +tskReqStr)
    Pattern pattern

    if( tskReqStr.contains( "assemble" ) ) // to run ./gradlew assembleRelease to build APK
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else if( tskReqStr.contains( "bundle" ) ) // to run ./gradlew bundleRelease to build .aab
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher( tskReqStr )
    println(tskReqStr)
    if( matcher.find() )
        return matcher.group(1).toLowerCase()
    else
    {
        println "NO MATCH FOUND"
        return ""
    }
}
println("Flavor: ${getCurrentFlavor()}")
if ( getCurrentFlavor() == "playstore" ){
    apply plugin: 'com.google.gms.google-services'
}