/*
 * Copyright 2019, Google
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * This Gradle file contains build information specifically for smart home Actions.
 */

apply plugin: 'com.google.protobuf'
protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.2.0'
    }
    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.2.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.plugins {
                grpc {}
            }
        }
    }
    generatedFilesBaseDir = "$projectDir/src/generated"
}

// Mark proto folders as source directories
sourceSets.main.java.srcDirs += file("${projectDir}/src/generated/main/java")
sourceSets.main.java.srcDirs += file("${projectDir}/src/generated/main/grpc")

ext {
    GRPC_VERSION = "1.21.0"
}

dependencies {
    compile "io.grpc:grpc-netty-shaded:${GRPC_VERSION}"
    compile "io.grpc:grpc-protobuf:${GRPC_VERSION}"
    compile "io.grpc:grpc-stub:${GRPC_VERSION}"
    compile "io.grpc:grpc-auth:${GRPC_VERSION}"
    compile 'com.google.auth:google-auth-library-oauth2-http:0.11.0'
    compile 'com.google.protobuf:protobuf-java-util:3.6.1'
    compile 'javax.annotation:javax.annotation-api:1.3.2'

    testCompile "io.grpc:grpc-testing:${GRPC_VERSION}"
    testCompile "org.mockito:mockito-core:2.+"
}

// In this section you declare where to find the dependencies of your project
repositories {
    mavenCentral()
    jcenter()
}

// Add a step to remove the generated protobufs during a clean
clean.doLast {
    file("${projectDir}/src/generated/").deleteDir()
    println "Removed generated sources directory"
}
