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) { val generators = project.extra["codeGenerators"] as LinkedHashMap 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")) } }