buildscript {
    repositories {
        google()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" } // jacoco 0.2
    }

    dependencies {
        //classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
        classpath 'com.hiya:jacoco-android:0.2'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-allopen'
apply plugin: 'com.hiya.jacoco-android'

apply from: "${project.rootDir}/gradle/android_dependencies.gradle"
apply from: "${project.rootDir}/gradle/jacoco_global.gradle"


ext {
    wearableVersion = "2.8.1"
    // playServicesWearable 17.1.0 breaks test
    playServicesWearable = "17.0.0"
}

def generateGitBuild = { ->

    StringBuilder stringBuilder = new StringBuilder()
    stringBuilder.append('"')
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            commandLine 'git', 'describe', '--always'
            standardOutput = stdout
        }
        String commitObject = stdout.toString().trim()
        stringBuilder.append(commitObject)
    } catch (ignored) {
        stringBuilder.append('NoGitSystemAvailable')
    }
    stringBuilder.append('-')
    stringBuilder.append((new Date()).format('yyyy.MM.dd'))
    stringBuilder.append('"')
    return stringBuilder.toString()
}

android {
    compileSdkVersion 31

    defaultConfig {
        applicationId "info.nightscout.androidaps"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 2
        versionName "1.0.3"
        buildConfigField "String", "BUILDVERSION", generateGitBuild()
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        firebaseDisable {
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }

    lintOptions {
        abortOnError false
    }

    flavorDimensions "standard"
    productFlavors {
        full {
            applicationId "info.nightscout.androidaps"
            dimension "standard"
            versionName version
        }
        pumpcontrol {
            applicationId "info.nightscout.aapspumpcontrol"
            dimension "standard"
            versionName version + "-pumpcontrol"
        }
        nsclient {
            applicationId "info.nightscout.nsclient"
            dimension "standard"
            versionName version + "-nsclient"
        }
        nsclient2 {
            applicationId "info.nightscout.nsclient2"
            dimension "standard"
            versionName version + "-nsclient"
        }
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        flatDir {
            dirs 'libs'
        }
    }
}


dependencies {
    implementation project(':shared')

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "androidx.core:core-ktx:$coreVersion"
    implementation "androidx.appcompat:appcompat:$appcompat_version"
    implementation "androidx.preference:preference-ktx:$preferencektx_version"
    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.wear:wear:1.2.0'


    compileOnly "com.google.android.wearable:wearable:${wearableVersion}"
    implementation "com.google.android.support:wearable:${wearableVersion}"
    implementation "com.google.android.gms:play-services-wearable:${playServicesWearable}"
    implementation(name: 'ustwo-clockwise-debug', ext: 'aar')
    implementation(name: 'wearpreferenceactivity-0.5.0', ext: 'aar')
    implementation('com.github.lecho:hellocharts-library:1.5.8@aar')

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

    testImplementation "junit:junit:$junit_version"
    testImplementation 'org.json:json:20211205'
    testImplementation("org.mockito:mockito-core:${mockitoVersion}") {
        exclude group: 'net.bytebuddy', module: 'byte-buddy'
        exclude group: 'net.bytebuddy', module: 'byte-buddy-android'
        exclude group: 'net.bytebuddy', module: 'byte-buddy-agent'
    }
    // to fix org.mockito:mockito-core dependency issues, fixed in mockito 3+
    testImplementation "net.bytebuddy:byte-buddy:$byteBuddyVersion"
    testImplementation "net.bytebuddy:byte-buddy-android:$byteBuddyVersion"
    testImplementation "net.bytebuddy:byte-buddy-agent:$byteBuddyVersion"

    testImplementation "joda-time:joda-time:$jodatime_version"
    testImplementation('com.google.truth:truth:1.1.3') {
        exclude group: "com.google.guava", module: "guava"
    }
    testImplementation "org.skyscreamer:jsonassert:1.5.0"
    testImplementation "org.hamcrest:hamcrest-all:1.3"

    // for old fashioned support-app version
    implementation "com.google.dagger:dagger:$dagger_version"
    implementation "com.google.dagger:dagger-android:$dagger_version"
    implementation "com.google.dagger:dagger-android-support:$dagger_version"

    annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
    annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
    kapt "com.google.dagger:dagger-android-processor:$dagger_version"
    kapt "com.google.dagger:dagger-compiler:$dagger_version"
}
repositories {
    mavenCentral()
}