// build.gradle.kts — Gradle build для crypto-service.
//
// Артефакт: ./build/libs/crypto-service-0.1.0-all.jar (shadow jar).
// Запуск: java -jar crypto-service-0.1.0-all.jar (UDS из BJ_CRYPTO_SOCKET).
//
// Зависимости (Maven Central, подключаются автоматически):
//   - grpc-java (server + protoc-gen-java)
//   - protobuf-java
//   - apache santuario (XMLDSig)
//   - jcp (КриптоПро JCP) — внешний jar, поставляется заказчиком
//     отдельно вместе с лицензией; положить в libs/.
//
// Соберётся, когда Maven Central доступен через прокси zetit
// (пока ждём админа).

plugins {
    id("java")
    id("application")
    id("com.google.protobuf") version "0.9.4"
    id("com.github.johnrengelman.shadow") version "8.1.1"
}

group = "ru.zetit.bridgeandjoins"
version = "0.1.0"

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(21))
    }
}

repositories {
    mavenCentral()
    flatDir { dirs("libs") } // для jcp.jar
}

dependencies {
    val grpcVer = "1.62.2"
    val protobufVer = "3.25.3"

    implementation("io.grpc:grpc-netty-shaded:$grpcVer")
    implementation("io.grpc:grpc-protobuf:$grpcVer")
    implementation("io.grpc:grpc-stub:$grpcVer")
    implementation("com.google.protobuf:protobuf-java:$protobufVer")

    // XMLDSig (с ГОСТ-патчем поставляется в libs/ заказчиком).
    implementation("org.apache.santuario:xmlsec:3.0.4")

    // КриптоПро JCP — кладётся в services/crypto-service/libs/jcp.jar.
    // implementation(files("libs/jcp.jar"))

    compileOnly("javax.annotation:javax.annotation-api:1.3.2")
    implementation("ch.qos.logback:logback-classic:1.5.6")

    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
    testImplementation("io.grpc:grpc-testing:$grpcVer")
}

application {
    mainClass.set("ru.zetit.bridgeandjoins.crypto.CryptoServer")
}

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.25.3"
    }
    plugins {
        id("grpc") {
            artifact = "io.grpc:protoc-gen-grpc-java:1.62.2"
        }
    }
    generateProtoTasks {
        all().forEach { task ->
            task.plugins {
                id("grpc")
            }
        }
    }
}

tasks.test {
    useJUnitPlatform()
}
