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 } ) }