import dev.adamko.factoriowebmap.configurations.asProvider import dev.adamko.factoriowebmap.configurations.typescriptAttributes plugins { id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") kotlin("plugin.serialization") } dependencies { implementation(platform(libs.kotlinx.serialization.bom)) implementation(libs.kotlinx.serialization.core) implementation(libs.kotlinx.serialization.json) 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 } ) }