Kafkatorio/modules/factorio-events-data-model/build.gradle.kts

46 lines
1.3 KiB
Kotlin

import dev.adamko.factoriowebmap.configurations.asProvider
import dev.adamko.factoriowebmap.configurations.typescriptAttributes
plugins {
id("dev.adamko.factoriowebmap.archetype.kotlin-jvm")
kotlin("plugin.serialization")
}
val projectId: String by project.extra
val buildDir: Directory = layout.buildDirectory.dir(projectId).get()
dependencies {
val kotlinXSerializationVersion = "1.3.0"
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinXSerializationVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinXSerializationVersion")
implementation("com.github.ntrrgc:ts-generator:1.1.2")
implementation("org.jetbrains.kotlin:kotlin-reflect")
}
val generateTypescript by tasks.registering(JavaExec::class) {
group = project.name
val generatedFileName = "$temporaryDir/data-model.ts"
inputs.property("generatedFileName", generatedFileName)
outputs.file(generatedFileName)
classpath(sourceSets.main.map { it.runtimeClasspath })
mainClass.set("dev.adamko.factorioevents.model.Kt2tsKt")
args(generatedFileName)
doFirst {
delete(temporaryDir)
mkdir(temporaryDir)
}
}
val typescriptModelGenerated by configurations.registering {
asProvider()
typescriptAttributes(objects)
outgoing.artifact(
generateTypescript.map {
it.outputs.files.singleFile
}
)
}