import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { kotlin("jvm") version "2.1.20" id("org.jetbrains.compose") version "1.8.0-alpha02" id("org.jetbrains.kotlin.plugin.compose") version "2.1.20" id("com.google.protobuf") version "0.9.4" id("io.gitlab.arturbosch.detekt") version "1.23.7" } group = "dev.wntrmute.exo" version = "0.1.0" repositories { google() mavenCentral() } val grpcVersion = "1.68.0" val grpcKotlinVersion = "1.4.1" val protobufVersion = "4.28.2" dependencies { // Compose Desktop implementation(compose.desktop.currentOs) implementation(compose.material3) implementation(compose.materialIconsExtended) // gRPC implementation("io.grpc:grpc-netty-shaded:$grpcVersion") implementation("io.grpc:grpc-protobuf:$grpcVersion") implementation("io.grpc:grpc-kotlin-stub:$grpcKotlinVersion") implementation("com.google.protobuf:protobuf-kotlin:$protobufVersion") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.9.0") // Testing testImplementation(kotlin("test")) testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") } // Protobuf code generation protobuf { protoc { artifact = "com.google.protobuf:protoc:$protobufVersion" } plugins { create("grpc") { artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion" } create("grpckt") { artifact = "io.grpc:protoc-gen-grpc-kotlin:$grpcKotlinVersion:jdk8@jar" } } generateProtoTasks { all().forEach { it.plugins { create("grpc") create("grpckt") } it.builtins { create("kotlin") } } } } // Detekt static analysis detekt { buildUponDefaultConfig = true config.setFrom(files("detekt.yml")) parallel = true } compose.desktop { application { mainClass = "dev.wntrmute.exo.MainKt" nativeDistributions { targetFormats(TargetFormat.Deb, TargetFormat.Rpm) packageName = "exo-desktop" packageVersion = "0.1.0" description = "kExocortex Desktop Application" vendor = "wntrmute.dev" } } } tasks.test { useJUnitPlatform() } kotlin { jvmToolchain(21) }