Scripts/convention/src/main/kotlin/jf.codegen.gradle.kts

31 lines
1.0 KiB
Plaintext

import io.gitlab.jfronny.scripts.*
plugins {
java
}
extra["codeGenerators"] = LinkedHashMap<String, ContentGenerator.Generated>()
val jfCodegen by tasks.registering {
doLast {
val generators = project.extra["codeGenerators"] as LinkedHashMap<String, ContentGenerator.Generated>
if (codegenDir.exists()) codegenDir.deleteRecursively()
generators.forEach { (name, generated) ->
generated.classes.forEach { (filePath, content) ->
val path = codegenDir.resolve("java").resolve(name).resolve(filePath)
path.parentFile.mkdirs()
path.writeText(content)
}
generated.resources.forEach { (filePath, content) ->
val path = codegenDir.resolve("resources").resolve(name).resolve(filePath)
path.parentFile.mkdirs()
path.writeBytes(content)
}
}
project.extra["codeGenerators"] = null
}
}
tasks.compileJava { dependsOn(jfCodegen) }
tasks.processResources { dependsOn(jfCodegen) }