import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    // Those declarations are just a workaround for a false-positive Kotlin Gradle Plugin warning
    // https://youtrack.jetbrains.com/issue/KT-46200
    alias(sharedLibs.plugins.android.application).apply(false)
    alias(sharedLibs.plugins.android.library).apply(false)
    alias(sharedLibs.plugins.kotlin.android).apply(false)
    alias(sharedLibs.plugins.kotlin.parcelize).apply(false)
    alias(sharedLibs.plugins.kotlin.detekt).apply(false)
    alias(sharedLibs.plugins.kotlin.jvm).apply(false)
    alias(sharedLibs.plugins.kotlin.kapt).apply(false)
    alias(sharedLibs.plugins.dependency.analysis)

    alias(sharedLibs.plugins.automattic.configure)
}

allprojects {
    apply plugin: 'checkstyle'
    apply plugin: 'io.gitlab.arturbosch.detekt'

    repositories {
        maven {
            url "https://a8c-libs.s3.amazonaws.com/android"
            content {
                includeGroup "org.wordpress"
                includeGroup "org.wordpress.fluxc"
                includeGroup "org.wordpress.wellsql"
            }
        }
        google()
        mavenCentral()
        maven {
            url "https://a8c-libs.s3.amazonaws.com/android/jcenter-mirror"
            content {
                includeVersion "com.android.volley", "volley", "1.1.1"
                includeVersion "com.facebook.flipper", "flipper", "0.51.0"
                includeVersion "com.facebook.flipper", "flipper-network-plugin", "0.51.0"
            }
        }
    }

    task checkstyle(type: Checkstyle) {
        source 'src'

        classpath = files()
    }

    checkstyle {
        toolVersion = '8.3'
        configFile file("${project.rootDir}/config/checkstyle.xml")
    }

    detekt {
        config = files("${project.rootDir}/config/detekt/detekt.yml")
        autoCorrect = false
        buildUponDefaultConfig = true
        disableDefaultRuleSets = false
        ignoreFailures = false
        parallel = true
        debug = false
    }

    tasks.withType(KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_1_8
        }
    }
}

ext {
    minSdkVersion = 24
    compileSdkVersion = 34
    targetSdkVersion = 34
}

ext {
    fluxcAnnotationsProjectDependency = project.hasProperty("fluxcAnnotationsVersion") ? "org.wordpress.fluxc:fluxc-annotations:${project.getProperty("fluxcAnnotationsVersion")}" : project(":fluxc-annotations")
    fluxcProcessorProjectDependency = project.hasProperty("fluxcProcessorVersion") ? "org.wordpress.fluxc:fluxc-processor:${project.getProperty("fluxcProcessorVersion")}" : project(":fluxc-processor")
    fluxcProjectDependency = project.hasProperty("fluxcVersion") ? "org.wordpress:fluxc:${project.getProperty("fluxcVersion")}" : project(":fluxc")
}

dependencies {
    detektPlugins sharedLibs.detekt.formatting
}

apply from: './config/gradle/gradle_build_scan.gradle'