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

buildscript {
    // Ref: https://kotlinlang.org/releases.html
    ext.kotlin_version = '1.4.31'
    ext.kotlin_coroutines_version = "1.4.2"
    repositories {
        google()
        jcenter()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        classpath 'com.google.gms:google-services:4.3.5'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1.1'
        classpath 'com.google.android.gms:oss-licenses-plugin:0.10.2'
        classpath "com.likethesalad.android:string-reference:1.2.1"

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

allprojects {
    repositories {
        // For olm library. This has to be declared first, to ensure that Olm library is not downloaded from another repo
        maven {
            url 'https://jitpack.io'
            content {
                // Use this repo only for olm library
                includeGroupByRegex "org\\.matrix\\.gitlab\\.matrix-org"
                // And also for FilePicker
                includeGroupByRegex "com\\.github\\.jaiselrahman"
                // And monarchy
                includeGroupByRegex "com\\.github\\.Zhuinden"
                // And ucrop
                includeGroupByRegex "com\\.github\\.yalantis"
                // JsonViewer
                includeGroupByRegex 'com\\.github\\.BillCarsonFr'
                // PhotoView
                includeGroupByRegex 'com\\.github\\.chrisbanes'
                // PFLockScreen-Android
                includeGroupByRegex 'com\\.github\\.vector-im'

                //Chat effects
                includeGroupByRegex 'com\\.github\\.jetradarmobile'
                includeGroupByRegex 'nl\\.dionsegijn'
            }
        }
        maven {
            url "http://dl.bintray.com/piasy/maven"
            content {
                includeGroupByRegex "com\\.github\\.piasy"
            }
        }
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
        // Jitsi repo
        maven {
            url "https://github.com/vector-im/jitsi_libre_maven/raw/master/android-sdk-3.1.0"
            // Note: to test Jitsi release you can use a local file like this:
            // url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-3.1.0"
        }
        google()
        jcenter()
    }

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        // Warnings are potential errors, so stop ignoring them
        // You can override by passing `-PallWarningsAsErrors=false` in the command line
        kotlinOptions.allWarningsAsErrors = project.getProperties().getOrDefault("allWarningsAsErrors", "true").toBoolean()
    }
}

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

apply plugin: 'org.sonarqube'

// To run a sonar analysis:
// Run './gradlew sonarqube -Dsonar.login=<REPLACE_WITH_SONAR_KEY>'
// The SONAR_KEY is stored in passbolt

sonarqube {
    properties {
        property "sonar.projectName", "Element-Android"
        property "sonar.projectKey", "im.vector.app.android"
        property "sonar.host.url", "https://sonarcloud.io"
        property "sonar.projectVersion", project(":vector").android.defaultConfig.versionName
        property "sonar.sourceEncoding", "UTF-8"
        property "sonar.links.homepage", "https://github.com/vector-im/element-android/"
        property "sonar.links.ci", "https://buildkite.com/matrix-dot-org/element-android"
        property "sonar.links.scm", "https://github.com/vector-im/element-android/"
        property "sonar.links.issue", "https://github.com/vector-im/element-android/issues"
        property "sonar.organization", "new_vector_ltd_organization"
        property "sonar.login", project.hasProperty("SONAR_LOGIN") ? SONAR_LOGIN : "invalid"
    }
}

project(":vector") {
    sonarqube {
        properties {
            property "sonar.sources", project(":vector").android.sourceSets.main.java.srcDirs
            // exclude source code from analyses separated by a colon (:)
            // Exclude Java source
            property "sonar.exclusions", "**/BugReporterMultipartBody.java"
        }
    }
}

project(":diff-match-patch") {
    sonarqube {
        skipProject = true
    }
}

//project(":matrix-sdk-android") {
//    sonarqube {
//        properties {
//            property "sonar.sources", project(":matrix-sdk-android").android.sourceSets.main.java.srcDirs
//            // exclude source code from analyses separated by a colon (:)
//            // property "sonar.exclusions", "**/*.*"
//        }
//    }
//}
//
//project(":matrix-sdk-android-rx") {
//    sonarqube {
//        properties {
//            property "sonar.sources", project(":matrix-sdk-android-rx").android.sourceSets.main.java.srcDirs
//            // exclude source code from analyses separated by a colon (:)
//            // property "sonar.exclusions", "**/*.*"
//        }
//    }
//}
