plugins {
    id 'application' // Provide convenience executables for trying out the examples.
    id 'java'

    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.8
targetCompatibility = 1.8

// 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.56.1-SNAPSHOT' // CURRENT_GRPC_VERSION
def protobufVersion = '3.22.3'

dependencies {
    implementation "io.grpc:grpc-protobuf:${grpcVersion}"
    implementation "io.grpc:grpc-stub:${grpcVersion}"
    implementation "io.grpc:grpc-services:${grpcVersion}"
    compileOnly "org.apache.tomcat:annotations-api:6.0.53"
    runtimeOnly "io.grpc:grpc-netty-shaded:${grpcVersion}"

    testImplementation 'junit:junit:4.13.2'
    testImplementation "io.grpc:grpc-testing:${grpcVersion}"
}

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

startScripts.enabled = false

task HelloWorldDebuggableClient(type: CreateStartScripts) {
    mainClass = 'io.grpc.examples.debug.HelloWorldDebuggableClient'
    applicationName = 'hello-world-debuggable-client'
    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
    classpath = startScripts.classpath
}

task HostnameDebuggableServer(type: CreateStartScripts) {
    mainClass = 'io.grpc.examples.debug.HostnameDebuggableServer'
    applicationName = 'hostname-debuggable-server'
    outputDir = new File(project.buildDir, 'tmp/scripts/' + name)
    classpath = startScripts.classpath
}

applicationDistribution.into('bin') {
    from(HelloWorldDebuggableClient)
    from(HostnameDebuggableServer)
    fileMode = 0755
}
