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

buildscript {
    ext {
        kotlin_version = '1.6.21'
        core_version = '1.7.0'
        rxjava_version = '3.1.4'
        rxandroid_version = '3.0.0'
        rxkotlin_version = '3.0.1'
        room_version = '2.4.2'
        lifecycle_version = '2.4.1'
        dagger_version = '2.42'
        coroutines_version = '1.6.1'
        activity_version = '1.4.0'
        fragmentktx_version = '1.4.1'
        ormLite_version = '4.46'
        gson_version = '2.9.0'
        nav_version = '2.4.2'
        appcompat_version = '1.4.1'
        material_version = '1.6.0'
        constraintlayout_version = '2.1.4'
        preferencektx_version = '1.2.0'
        commonslang3_version = '3.12.0'
        commonscodec_version = '1.15'
        jodatime_version = '2.10.14'
        work_version = '2.7.1'
        tink_version = '1.5.0'
        json_version = '20220320'
        joga_version = '2.10.14'

        junit_version = '4.13.2'
        mockito_version = '4.4.0'
        dexmaker_version = '1.2'
        retrofit2_version = '2.9.0'
        okhttp3_version = '4.9.0'
        byteBuddy_version = '1.12.8'

        androidx_junit_version = '1.1.3'
        androidx_rules_version = '1.4.0'

        wearable_version = '2.9.0'
        play_services_wearable_version = '17.1.0'
        play_services_location_version = '19.0.1'
    }
    repositories {
        google()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" } // jacoco 0.2
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.0'
        classpath 'com.google.gms:google-services:4.3.10'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.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 "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
        classpath 'com.hiya:jacoco-android:0.2'
    }
}

plugins {
    id "io.gitlab.arturbosch.detekt" version "1.20.0"
    id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
    id 'org.barfuin.gradle.jacocolog' version '2.0.0'
    id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url "https://maven.google.com" }
        maven { url 'https://jitpack.io' }
    }
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            freeCompilerArgs = [
                    '-opt-in=kotlin.RequiresOptIn',
                    '-Xjvm-default=all'     //Support @JvmDefault
            ]
            jvmTarget = "11"
        }
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }
}

apply from: 'jacoco_project.gradle'

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

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