buildscript {
    repositories {
        gradlePluginPortal()
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.6'
        // NOTE: 0.7 or newer will require upgrading to a newer Android gradle plugin:
        // https://github.com/tbroyer/gradle-errorprone-plugin/commit/65b1026ebeae1b7ed8c28578c7f6eea512c16bea
        classpath 'net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:0.6.1'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

subprojects {
    apply plugin: 'com.github.sherter.google-java-format'
    apply plugin: 'net.ltgt.errorprone'

    googleJavaFormat {
        toolVersion = '1.5'
        options style: 'AOSP'
    }

    apply plugin: 'com.android.library'

    dependencies {
        // NOTE: Updating ErrorProne introduces new checks that may cause the build to fail. Pin to a
        // specific version to control these updates.
        errorprone("com.google.errorprone:error_prone_core:2.3.2")
        // ErrorProne requires a JDK 9 compiler, so pull one in as a dependency since we use Java 8:
        // https://github.com/tbroyer/gradle-errorprone-plugin#jdk-8-support
        errorproneJavac("com.google.errorprone:javac:9+181-r4173-1")
    }

    group = 'com.android.volley'
    version = '1.2.1-SNAPSHOT'

    android {
        useLibrary 'org.apache.http.legacy'

        compileSdkVersion 28
        buildToolsVersion = '28.0.3'

        defaultConfig {
            minSdkVersion 8
        }

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }

    tasks.withType(JavaCompile) {
        options.errorprone {
            check("ParameterComment", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)
        }
        options.compilerArgs << "-Xlint:unchecked" << "-Werror"
    }

    if (it.name != 'testing') {
        apply from: '../publish.gradle'
    }
}
