21 lines
876 B
Kotlin
21 lines
876 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 exists = generators.containsKey(name)
|
|
val generator = ContentGenerator()
|
|
generate.execute(generator)
|
|
generators[name] = if (exists) generators[name]!!.merge(generator.finalize()) else generator.finalize()
|
|
if (!exists) {
|
|
java.srcDir(project.codegenDir.resolve("java/$name"))
|
|
resources.srcDir(project.codegenDir.resolve("resources/$name"))
|
|
}
|
|
} |