don't use buildDir, take advantage of kt dsl
ci/woodpecker/manual/gradle Pipeline was successful Details
ci/woodpecker/manual/pages Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2024-02-19 14:32:14 +01:00
parent 32b8efd6ca
commit 4f312a9c0d
Signed by: Johannes
GPG Key ID: E76429612C2929F4
4 changed files with 11 additions and 17 deletions

View File

@ -7,6 +7,7 @@ import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.tasks.SourceSet
import org.gradle.kotlin.dsl.extra
import org.gradle.kotlin.dsl.provideDelegate
import java.lang.reflect.Type
import java.util.function.Supplier
import javax.lang.model.element.Element
@ -16,13 +17,13 @@ import javax.lang.model.type.DeclaredType
import javax.lang.model.type.TypeMirror
import javax.lang.model.util.Types
val Project.codegenDir get() = buildDir.resolve("generated/sources/jfCodegen")
val Project.codegenDir get() = layout.buildDirectory.dir("generated/sources/jfCodegen").get().asFile
fun SourceSet.generate(project: Project, generate: Action<ContentGenerator>) {
val generators = project.extra["codeGenerators"] as LinkedHashMap<String, ContentGenerator.Generated>
val exists = generators.containsKey(name)
val codeGenerators: MutableMap<String, ContentGenerator.Generated> by project.extra
val exists = codeGenerators.containsKey(name)
val generator = ContentGenerator().runAction(generate)
generators[name] = if (exists) generators[name]!!.merge(generator.generate()) else generator.generate()
codeGenerators[name] = if (exists) codeGenerators[name]!!.merge(generator.generate()) else generator.generate()
if (!exists) {
java.srcDir(project.codegenDir.resolve("java/$name"))
resources.srcDir(project.codegenDir.resolve("resources/$name"))
@ -87,7 +88,7 @@ class ContentGenerator {
@JvmStatic
private fun check(name: String, type: String, pattern: Regex) {
if (!pattern.matches(name)) throw IllegalArgumentException("$type \"$name\" is not a valid $type")
require(pattern.matches(name)) { "$type \"$name\" is not a valid $type" }
}
}
}

View File

@ -6,13 +6,12 @@ plugins {
`java-library`
}
extra["codeGenerators"] = LinkedHashMap<String, ContentGenerator.Generated>()
var codeGenerators: MutableMap<String, ContentGenerator.Generated>? by extra(LinkedHashMap())
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) ->
codeGenerators!!.forEach { (name, generated) ->
generated.classes.forEach { (filePath, content) ->
val path = codegenDir.resolve("java").resolve(name).resolve(filePath)
path.parentFile.mkdirs()
@ -24,7 +23,7 @@ val jfCodegen by tasks.registering {
path.writeBytes(content)
}
}
project.extra["codeGenerators"] = null
codeGenerators = null
}
}

View File

@ -26,7 +26,7 @@ val moveArtifacts by tasks.registering(Copy::class) {
dependsOn(source.value)
}
into(buildDir.resolve("artifacts"))
into(layout.buildDirectory.dir("artifacts"))
}
tasks.deployDebug.dependsOn(moveArtifacts)

View File

@ -1,13 +1,7 @@
import io.gitlab.jfronny.scripts.*
import net.fabricmc.loom.task.PrepareJarRemapTask
import net.fabricmc.loom.task.RemapJarTask
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.tasks.GenerateModuleMetadata
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.kotlin.dsl.*
import java.io.File
plugins {
id("jf.java")
@ -17,7 +11,7 @@ plugins {
id("com.github.johnrengelman.shadow")
}
val devlibs = File(project.buildDir, "devlibs")
val devlibs = project.layout.buildDirectory.dir("devlibs").get().asFile
// Configure loom for stricter dev env
loom {