Kafkatorio/modules/events-schema/build.gradle.kts

128 lines
3.3 KiB
Text
Raw Normal View History

2021-12-01 18:12:34 +01:00
import dev.adamko.kafkatorio.gradle.asProvider
import dev.adamko.kafkatorio.gradle.typescriptAttributes
import dev.adamko.kafkatorio.task.GenerateTypeScriptTask
plugins {
dev.adamko.kafkatorio.lang.`kotlin-multiplatform`
id("io.kotest.multiplatform")
kotlin("plugin.serialization")
distribution
}
2021-10-25 23:35:18 +02:00
2021-12-08 17:43:08 +01:00
kotlin {
2021-12-08 17:43:08 +01:00
js(IR) {
browser {}
// this is a library - don't set binaries.executable()
2021-12-08 17:43:08 +01:00
}
2022-01-09 11:06:15 +01:00
jvm {
val main by compilations.getting {
kotlinOptions {
jvmTarget = "11"
}
}
2022-01-09 11:06:15 +01:00
testRuns["test"].executionTask.configure {
useJUnitPlatform()
}
}
2021-12-08 17:43:08 +01:00
sourceSets {
all {
languageSettings.apply {
optIn("kotlin.RequiresOptIn")
optIn("kotlin.ExperimentalStdlibApi")
optIn("kotlin.time.ExperimentalTime")
optIn("kotlinx.serialization.ExperimentalSerializationApi")
2021-12-08 21:15:37 +01:00
optIn("kotlin.js.ExperimentalJsExport")
2021-12-08 17:43:08 +01:00
}
}
val commonMain by getting {
dependencies {
2022-01-04 15:09:50 +01:00
implementation(project.dependencies.platform(libs.kotlin.bom))
2021-12-08 17:43:08 +01:00
2022-01-04 15:09:50 +01:00
implementation(project.dependencies.platform(libs.kotlinx.serialization.bom))
2021-12-08 17:43:08 +01:00
implementation(libs.kotlinx.serialization.core)
implementation(libs.kotlinx.serialization.json)
api("dev.adamko.kxstsgen:kxs-ts-gen-core:0.1.3")
2021-12-08 17:43:08 +01:00
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
2022-01-04 15:09:50 +01:00
implementation(project.dependencies.platform(libs.kotest.bom))
implementation("io.kotest:kotest-framework-engine")
implementation(libs.kotest.core)
implementation(libs.kotest.datatest)
implementation(libs.kotest.prop)
implementation(libs.kotest.json)
2021-12-08 17:43:08 +01:00
}
}
2021-12-08 17:43:08 +01:00
val jvmMain by getting {
dependencies {
implementation("com.github.aSemy:ts-generator:v1.2.1")
implementation(kotlin("reflect"))
2021-12-08 17:43:08 +01:00
}
}
2021-12-08 17:43:08 +01:00
val jvmTest by getting {
dependencies {
implementation("io.kotest:kotest-runner-junit5")
}
}
val jsTest by getting {
dependencies {
implementation(kotlin("test-js"))
}
}
2021-12-08 17:43:08 +01:00
}
2021-10-31 09:13:41 +01:00
}
2022-05-07 20:22:54 +02:00
val jvmJar: TaskProvider<Jar> = tasks.named<Jar>(kotlin.jvm().artifactsTaskName)
val mainCompilation: Provider<FileCollection> =
kotlin.jvm().compilations.named("main").map { it.runtimeDependencyFiles }
2021-12-08 17:43:08 +01:00
val generateTypeScript by tasks.registering(GenerateTypeScriptTask::class) {
dependsOn(jvmJar)
2021-12-08 17:43:08 +01:00
classpath(
jvmJar,
2022-05-07 20:22:54 +02:00
mainCompilation,
2021-12-08 17:43:08 +01:00
)
2022-05-07 20:22:54 +02:00
output.set(layout.buildDirectory.dir("generated/typescript"))
mainClass.set("dev.adamko.kafkatorio.events.schema.Kt2ts2Kt")
2022-05-07 20:22:54 +02:00
args(temporaryDir.canonicalPath)
}
2021-12-08 17:43:08 +01:00
val schemaTsDistributionName: Provider<String> = providers.provider {
2022-05-07 20:22:54 +02:00
"${rootProject.name}-${project.name}"
}
val generateTypeScriptOutputFiles: Provider<FileTree> =
generateTypeScript.map { it.outputs.files.asFileTree }
2021-12-08 17:43:08 +01:00
val schemaTs by distributions.registering {
2022-05-07 20:22:54 +02:00
distributionBaseName.set(schemaTsDistributionName)
2021-12-08 17:43:08 +01:00
contents {
from(generateTypeScriptOutputFiles)
}
}
val schemaTsZipTask: TaskProvider<Zip> = tasks.named<Zip>("${schemaTs.name}DistZip")
val schemaTsZipTaskArchiveFile: Provider<RegularFile> = schemaTsZipTask.flatMap { it.archiveFile }
2022-05-07 20:22:54 +02:00
val typeScriptModelGenerated: Configuration by configurations.creating {
asProvider()
typescriptAttributes(objects)
2021-12-08 17:43:08 +01:00
outgoing.artifact(schemaTsZipTaskArchiveFile)
}