2022-10-13 19:12:11 +02:00
|
|
|
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>
|
2022-10-14 15:43:17 +02:00
|
|
|
val exists = generators.containsKey(name)
|
2022-10-13 19:12:11 +02:00
|
|
|
val generator = ContentGenerator()
|
|
|
|
generate.execute(generator)
|
2022-10-14 15:43:17 +02:00
|
|
|
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"))
|
|
|
|
}
|
2022-10-13 19:12:11 +02:00
|
|
|
}
|