Scripts/convention/src/main/kotlin/io/gitlab/jfronny/scripts/CodegenExt.kt

18 lines
733 B
Kotlin

package io.gitlab.jfronny.scripts
import io.gitlab.jfronny.scripts.codegen.ContentGenerator
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.tasks.SourceSet
import org.gradle.kotlin.dsl.extra
val Project.codegenDir get() = buildDir.resolve("generated/sources/jfCodegen")
fun SourceSet.generate(project: Project, generate: Action<ContentGenerator>) {
val generators = project.extra["codeGenerators"] as LinkedHashMap<String, ContentGenerator.Generated>
val generator = ContentGenerator()
generate.execute(generator)
generators[name] = generator.finalize()
java.srcDir(project.codegenDir.resolve("java/$name"))
resources.srcDir(project.codegenDir.resolve("resources/$name"))
}