plugins {
    // Provide convenience executables for trying out the examples.
    id 'application'
    // ASSUMES GRADLE 5.6 OR HIGHER. Use plugin version 0.8.10 with earlier gradle versions
    id 'com.google.protobuf' version '0.8.17'
    // Generate IntelliJ IDEA's .idea & .iml project files
    id 'idea'
}

repositories {
    maven { // The google mirror is less flaky than mavenCentral()
        url "https://maven-central.storage-download.googleapis.com/maven2/"
    }
    mavenCentral()
    mavenLocal()
}

sourceCompatibility = 1.7
targetCompatibility = 1.7

// IMPORTANT: You probably want the non-SNAPSHOT version of gRPC. Make sure you
// are looking at a tagged version of the example and not "master"!

// Feel free to delete the comment at the next line. It is just for safely
// updating the version in our release process.
def grpcVersion = '1.41.2-SNAPSHOT' // CURRENT_GRPC_VERSION
def protocVersion = '3.18.2'

dependencies {
    // grpc-alts transitively depends on grpc-netty-shaded, grpc-protobuf, and grpc-stub
    implementation "io.grpc:grpc-alts:${grpcVersion}"
    compileOnly "org.apache.tomcat:annotations-api:6.0.53"
}

protobuf {
    protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" }
    plugins {
        grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
    }
    generateProtoTasks {
        all()*.plugins { grpc {} }
    }
}

// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code.
sourceSets {
    main {
        java {
            srcDirs 'build/generated/source/proto/main/grpc'
            srcDirs 'build/generated/source/proto/main/java'
        }
    }
}

startScripts.enabled = false


task helloWorldAltsServer(type: CreateStartScripts) {
    mainClassName = 'io.grpc.examples.alts.HelloWorldAltsServer'
    applicationName = 'hello-world-alts-server'
    outputDir = new File(project.buildDir, 'tmp')
    classpath = startScripts.classpath
}

task helloWorldAltsClient(type: CreateStartScripts) {
    mainClassName = 'io.grpc.examples.alts.HelloWorldAltsClient'
    applicationName = 'hello-world-alts-client'
    outputDir = new File(project.buildDir, 'tmp')
    classpath = startScripts.classpath
}

applicationDistribution.into('bin') {
    from(helloWorldAltsServer)
    from(helloWorldAltsClient)
    fileMode = 0755
}
