// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        kotlin_version = '1.4.31'
        coreVersion = '1.3.2'
        rxjava_version = '2.2.21'
        rxandroid_version = '2.1.1'
        rxkotlin_version = '2.4.0'
        room_version = '2.2.6'
        lifecycle_version = '2.3.0'
        dagger_version = '2.33'
        coroutinesVersion = '1.4.1'
        activityVersion = '1.2.0'
        fragmentktx_version = '1.3.0'
        ormLiteVersion = '4.46'
        nav_version = '2.3.3'
        appcompat_version = '1.2.0'
        material_version = '1.3.0'
        constraintlayout_version = '2.0.4'
        preferencektx_version = '1.1.1'
        commonslang3_version = '3.11'
        commonscodec_version = '1.15'
        jodatime_version = '2.10.10'
        work_version = '2.5.0'

        junit_version = '4.13.2'
        mockitoVersion = '3.8.0'
        powermockVersion = '2.0.9'
        dexmakerVersion = "1.2"
        retrofit2Version = '2.9.0'
        okhttp3Version = '4.9.0'
        byteBuddyVersion = '1.10.21'

        androidx_junit = '1.1.2'
        androidx_rules = '1.4.0-alpha04'
    }
    repositories {
        google()
        mavenCentral()
        jcenter() {
            content {
                includeModule("org.jetbrains.trove4j", "trove4j")
            }
        }
        maven { url "https://plugins.gradle.org/m2/" } // jacoco 0.2
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.3'
        classpath 'com.google.gms:google-services:4.3.4'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.hiya:jacoco-android:0.2'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven {
            url "https://maven.google.com"
        }
        ivy {
            url 'https://github.com/'
            patternLayout {
                artifact '/[organisation]/[module]/archive/[revision].[ext]'
            }
        }
        maven { url 'https://jitpack.io' }
        jcenter() {
            content {
                includeModule("com.google.android", "flexbox")
                includeModule("org.jetbrains.trove4j", "trove4j")
            }
        }
    }
    //Support @JvmDefault
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            freeCompilerArgs = ['-Xjvm-default=enable'] //enable or compatibility
            jvmTarget = "1.8"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

subprojects {
    tasks.withType(Test) {
        maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
    }
}