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

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.5"

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

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

subprojects {
    apply plugin: "checkstyle"

    checkstyle {
        configDir = file("$rootDir/../buildscripts")
        toolVersion = "6.17"
        ignoreFailures = false
        if (rootProject.hasProperty("checkstyle.ignoreFailures")) {
            ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean()
        }
    }

    // Checkstyle doesn't run automatically with android
    task checkStyleMain(type: Checkstyle) {
        source 'src/main/java'
        include '**/*.java'
        classpath = files()
    }

    task checkStyleTest(type: Checkstyle) {
        source 'src/test/java'
        include '**/*.java'
        classpath = files()
    }

    afterEvaluate { project ->
        project.tasks['check'].dependsOn checkStyleMain, checkStyleTest
    }
}
