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/"
    }
    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' // CURRENT_GRPC_VERSION
def protobufVersion = '3.18.2'
def protocVersion = protobufVersion

dependencies {
    implementation "io.grpc:grpc-protobuf:${grpcVersion}"
    implementation "io.grpc:grpc-stub:${grpcVersion}"
    implementation "io.jsonwebtoken:jjwt:0.9.1"
    implementation "javax.xml.bind:jaxb-api:2.3.1"

    compileOnly "org.apache.tomcat:annotations-api:6.0.53"

    runtimeOnly "io.grpc:grpc-netty-shaded:${grpcVersion}"

    testImplementation "io.grpc:grpc-testing:${grpcVersion}"
    testImplementation "junit:junit:4.12"
    testImplementation "org.mockito:mockito-core:3.4.0"
}

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 hellowWorldJwtAuthServer(type: CreateStartScripts) {
    mainClassName = 'io.grpc.examples.jwtauth.AuthServer'
    applicationName = 'auth-server'
    outputDir = new File(project.buildDir, 'tmp')
    classpath = startScripts.classpath
}

task hellowWorldJwtAuthClient(type: CreateStartScripts) {
    mainClassName = 'io.grpc.examples.jwtauth.AuthClient'
    applicationName = 'auth-client'
    outputDir = new File(project.buildDir, 'tmp')
    classpath = startScripts.classpath
}

applicationDistribution.into('bin') {
    from(hellowWorldJwtAuthServer)
    from(hellowWorldJwtAuthClient)
    fileMode = 0755
}
