
allprojects {
    repositories {
        jcenter()
    }
}

ext {
    //Android
    androidBuildToolsVersion = "26.0.0"
    androidMinSdkVersion = 15
    androidTargetSdkVersion = 26
    androidCompileSdkVersion = 26

    //Libraries
    kotlinVersion = '1.1.3-2'
    butterKnifeVersion = '7.0.1'
    recyclerViewVersion = '21.0.3'
    rxJavaVersion = '2.0.2'
    rxKotlinVersion = '2.1.0'
    rxAndroidVersion = '2.0.1'
    javaxAnnotationVersion = '1.0'
    javaxInjectVersion = '1'
    gsonVersion = '2.8.1'
    okHttpVersion = '3.8.1'
    androidAnnotationsVersion = '21.0.3'
    retrofitVersion = '2.3.0'
    roomVersion = '1.0.0-alpha6'
    supportLibraryVersion = '26.0.1'
    timberVersion = '4.5.1'
    glideVersion = '4.0.0'
    daggerVersion = '2.11'
    glassfishAnnotationVersion = '10.0-b28'

    //Testing
    robolectricVersion = '3.4.2'
    jUnitVersion = '4.12'
    assertJVersion = '3.8.0'
    mockitoVersion = '1.9.5'
    dexmakerVersion = '1.0'
    espressoVersion = '3.0.0'
    testingSupportLibVersion = '0.1'
    mockitoKotlinVersion = '1.5.0'
    mockitoAndroidVersion = '2.8.47'
    androidSupportRunnerVersion = '1.0.0'
    androidSupportRulesVersion = '1.0.0'
    dexmakerMockitoversion = '2.2.0'
    runnerVersion = '0.5'

    domainDependencies = [
            javaxAnnotation:    "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
            javaxInject:        "javax.inject:javax.inject:${javaxInjectVersion}",
            rxKotlin:           "io.reactivex.rxjava2:rxkotlin:${rxKotlinVersion}",
            kotlin:             "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}"
    ]

    domainTestDependencies = [
            junit:              "junit:junit:${jUnitVersion}",
            mockito:            "com.nhaarman:mockito-kotlin:${mockitoKotlinVersion}",
            assertj:            "org.assertj:assertj-core:${assertJVersion}"
    ]

    presentationDependencies = [
            daggerCompiler:     "com.google.dagger:dagger-compiler:${daggerVersion}",
            dagger:             "com.google.dagger:dagger:${daggerVersion}",
            okHttp:             "com.squareup.okhttp3:okhttp:${okHttpVersion}",
            okHttpLogger:       "com.squareup.okhttp3:logging-interceptor:${okHttpVersion}",
            gson:               "com.google.code.gson:gson:${gsonVersion}",
            rxKotlin:           "io.reactivex.rxjava2:rxkotlin:${rxKotlinVersion}",
            kotlin:             "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}",
            rxAndroid:          "io.reactivex.rxjava2:rxandroid:${rxAndroidVersion}",
            javaxAnnotation:    "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
            javaxInject:        "javax.inject:javax.inject:${javaxInjectVersion}",
            androidAnnotations: "com.android.support:support-annotations:${androidAnnotationsVersion}",
            retrofit:           "com.squareup.retrofit2:retrofit:${retrofitVersion}",
            retrofitConverter:  "com.squareup.retrofit2:converter-gson:${retrofitVersion}",
            retrofitAdapter:    "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
    ]

    presentationTestDependencies = [
            junit:              "junit:junit:${jUnitVersion}",
            kotlinJUnit:        "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}",
            assertj:            "org.assertj:assertj-core:${assertJVersion}",
            mockito:            "com.nhaarman:mockito-kotlin:${mockitoKotlinVersion}",
            robolectric:        "org.robolectric:robolectric:${robolectricVersion}"
    ]

    dataDependencies = [
            daggerCompiler:     "com.google.dagger:dagger-compiler:${daggerVersion}",
            dagger:             "com.google.dagger:dagger:${daggerVersion}",
            okHttp:             "com.squareup.okhttp3:okhttp:${okHttpVersion}",
            okHttpLogger:       "com.squareup.okhttp3:logging-interceptor:${okHttpVersion}",
            gson:               "com.google.code.gson:gson:${gsonVersion}",
            rxKotlin:           "io.reactivex.rxjava2:rxkotlin:${rxKotlinVersion}",
            kotlin:             "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}",
            rxAndroid:          "io.reactivex.rxjava2:rxandroid:${rxAndroidVersion}",
            javaxAnnotation:    "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
            javaxInject:        "javax.inject:javax.inject:${javaxInjectVersion}",
            androidAnnotations: "com.android.support:support-annotations:${androidAnnotationsVersion}",
            retrofit:           "com.squareup.retrofit2:retrofit:${retrofitVersion}",
            retrofitConverter:  "com.squareup.retrofit2:converter-gson:${retrofitVersion}",
            retrofitAdapter:    "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
    ]

    dataTestDependencies = [
            junit:              "junit:junit:${jUnitVersion}",
            kotlinJUnit:        "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}",
            assertj:            "org.assertj:assertj-core:${assertJVersion}",
            mockito:            "com.nhaarman:mockito-kotlin:${mockitoKotlinVersion}",
            robolectric:        "org.robolectric:robolectric:${robolectricVersion}"
    ]

    cacheDependencies = [
            daggerCompiler:     "com.google.dagger:dagger-compiler:${daggerVersion}",
            dagger:             "com.google.dagger:dagger:${daggerVersion}",
            gson:               "com.google.code.gson:gson:${gsonVersion}",
            rxKotlin:           "io.reactivex.rxjava2:rxkotlin:${rxKotlinVersion}",
            kotlin:             "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}",
            javaxAnnotation:    "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
            javaxInject:        "javax.inject:javax.inject:${javaxInjectVersion}",
            androidAnnotations: "com.android.support:support-annotations:${androidAnnotationsVersion}",
            roomRuntime:        "android.arch.persistence.room:runtime:${roomVersion}",
            roomCompiler:       "android.arch.persistence.room:compiler:${roomVersion}",
            roomRxJava:         "android.arch.persistence.room:rxjava2:${roomVersion}",
    ]

    cacheTestDependencies = [
            junit:              "junit:junit:${jUnitVersion}",
            kotlinJUnit:        "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}",
            assertj:            "org.assertj:assertj-core:${assertJVersion}",
            mockito:            "com.nhaarman:mockito-kotlin:${mockitoKotlinVersion}",
            robolectric:        "org.robolectric:robolectric:${robolectricVersion}",
            roomTesting:        "android.arch.persistence.room:testing:${roomVersion}",
            archTesting:        "android.arch.core:core-testing:${roomVersion}",
            supportRunner:      "com.android.support.test:runner:${androidSupportRunnerVersion}",
            supportRules:       "com.android.support.test:rules:${androidSupportRulesVersion}"
    ]

    remoteDependencies = [
            daggerCompiler:     "com.google.dagger:dagger-compiler:${daggerVersion}",
            dagger:             "com.google.dagger:dagger:${daggerVersion}",
            gson:               "com.google.code.gson:gson:${gsonVersion}",
            rxKotlin:           "io.reactivex.rxjava2:rxkotlin:${rxKotlinVersion}",
            kotlin:             "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}",
            javaxAnnotation:    "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
            javaxInject:        "javax.inject:javax.inject:${javaxInjectVersion}",
            androidAnnotations: "com.android.support:support-annotations:${androidAnnotationsVersion}",
            okHttp:             "com.squareup.okhttp3:okhttp:${okHttpVersion}",
            okHttpLogger:       "com.squareup.okhttp3:logging-interceptor:${okHttpVersion}",
            retrofit:           "com.squareup.retrofit2:retrofit:${retrofitVersion}",
            retrofitConverter:  "com.squareup.retrofit2:converter-gson:${retrofitVersion}",
            retrofitAdapter:    "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
    ]

    remoteTestDependencies = [
            junit:              "junit:junit:${jUnitVersion}",
            kotlinJUnit:        "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}",
            assertj:            "org.assertj:assertj-core:${assertJVersion}",
            mockito:            "com.nhaarman:mockito-kotlin:${mockitoKotlinVersion}",
            supportRunner:      "com.android.support.test:runner:${androidSupportRunnerVersion}",
            supportRules:       "com.android.support.test:rules:${androidSupportRulesVersion}"
    ]

    mobileUiDependencies = [
            daggerCompiler:     "com.google.dagger:dagger-compiler:${daggerVersion}",
            dagger:             "com.google.dagger:dagger:${daggerVersion}",
            rxKotlin:           "io.reactivex.rxjava2:rxkotlin:${rxKotlinVersion}",
            rxAndroid:          "io.reactivex.rxjava2:rxandroid:${rxAndroidVersion}",
            glide:              "com.github.bumptech.glide:glide:${glideVersion}",
            kotlin:             "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}",
            javaxAnnotation:    "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
            javaxInject:        "javax.inject:javax.inject:${javaxInjectVersion}",
            androidAnnotations: "com.android.support:support-annotations:${supportLibraryVersion}",
            androidSupportV4:   "com.android.support:support-v4:${supportLibraryVersion}",
            androidSupportV13:  "com.android.support:support-v13:${supportLibraryVersion}",
            appCompatV7:        "com.android.support:appcompat-v7:${supportLibraryVersion}",
            supportRecyclerView:"com.android.support:recyclerview-v7:${supportLibraryVersion}",
            supportDesign:      "com.android.support:design:${supportLibraryVersion}",
            timber:             "com.jakewharton.timber:timber:${timberVersion}",
            daggerSupport:      "com.google.dagger:dagger-android-support:${daggerVersion}",
            daggerProcessor:    "com.google.dagger:dagger-android-processor:${daggerVersion}",
            glassfishAnnotation: "org.glassfish:javax.annotation:${glassfishAnnotationVersion}"
    ]

    mobileUiTestDependencies = [
            junit:              "junit:junit:${jUnitVersion}",
            kotlinJUnit:        "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}",
            assertj:            "org.assertj:assertj-core:${assertJVersion}",
            mockito:            "com.nhaarman:mockito-kotlin:${mockitoKotlinVersion}",
            supportRunner:      "com.android.support.test:runner:${androidSupportRunnerVersion}",
            supportRules:       "com.android.support.test:rules:${androidSupportRulesVersion}",
            mockitoAndroid:     "org.mockito:mockito-android:${mockitoAndroidVersion}",
            espressoCore:       "com.android.support.test.espresso:espresso-core:${espressoVersion}",
            espressoIntents:    "com.android.support.test.espresso:espresso-intents:${espressoVersion}",
            espressoContrib:    "com.android.support.test.espresso:espresso-contrib:${espressoVersion}",
            androidRunner:      "com.android.support.test:runner:${runnerVersion}",
            androidRules:       "com.android.support.test:rules:${runnerVersion}"
    ]

}