plugins {
    id "java-library"
    id "maven-publish"

    id "com.google.protobuf"
    id "ru.vyarus.animalsniffer"
}

description = "gRPC: Google Cloud Platform Observability"

tasks.named("compileJava").configure {
    it.options.compilerArgs += [
            // only has AutoValue annotation processor
            "-Xlint:-processing"
    ]
    appendToProperty(
            it.options.errorprone.excludedPaths,
            ".*/build/generated/sources/annotationProcessor/java/.*",
            "|")
}

dependencies {
    def cloudLoggingVersion = '3.14.5'

    annotationProcessor libraries.auto.value
    api project(':grpc-api')

    // TODO(dnvindhya): Prefer using our own libraries, update the dependencies
    //  in gradle/libs.versions instead
    implementation project(':grpc-protobuf'),
            project(':grpc-stub'),
            project(':grpc-census'),
            libraries.opencensus.contrib.grpc.metrics
    // Avoid gradle using project dependencies without configuration: shadow
    implementation ("com.google.cloud:google-cloud-logging:${cloudLoggingVersion}") {
        exclude group: 'io.grpc', module: 'grpc-alts'
        exclude group: 'io.grpc', module: 'grpc-netty-shaded'
        exclude group: 'io.grpc', module: 'grpc-xds'
    }
    implementation (libraries.opencensus.exporter.stats.stackdriver) {
        exclude group: 'io.grpc', module: 'grpc-alts'
        exclude group: 'io.grpc', module: 'grpc-netty-shaded'
        exclude group: 'io.grpc', module: 'grpc-xds'
    }
    implementation (libraries.opencensus.exporter.trace.stackdriver) {
        exclude group: 'io.grpc', module: 'grpc-alts'
        exclude group: 'io.grpc', module: 'grpc-netty-shaded'
        exclude group: 'io.grpc', module: 'grpc-xds'
    }

    runtimeOnly libraries.opencensus.impl,
            project(path: ':grpc-netty-shaded', configuration: 'shadow'),
            project(path: ':grpc-xds', configuration: 'shadow'),
            project(path: ':grpc-alts', configuration: 'shadow'),
            project(':grpc-auth'), // Align grpc versions
            project(':grpc-core'), // Align grpc versions
            project(':grpc-grpclb'), // Align grpc versions
            project(':grpc-services'), // Align grpc versions
            libraries.animalsniffer.annotations, // Use our newer version
            libraries.guava.jre, // Use our newer version
            libraries.protobuf.java.util, // Use our newer version
            libraries.re2j // Use our newer version

    testImplementation testFixtures(project(':grpc-context')),
            project(':grpc-testing'),
            project(':grpc-testing-proto')
    testImplementation (libraries.guava.testlib) {
        exclude group: 'junit', module: 'junit'
    }

    signature libraries.signature.java
}

configureProtoCompilation()
