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.Project
import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSet
import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.extra
import org.gradle.kotlin.dsl.provideDelegate
import java.lang.reflect.Type import java.lang.reflect.Type
import java.util.function.Supplier import java.util.function.Supplier
import javax.lang.model.element.Element 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.type.TypeMirror
import javax.lang.model.util.Types 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>) { fun SourceSet.generate(project: Project, generate: Action<ContentGenerator>) {
val generators = project.extra["codeGenerators"] as LinkedHashMap<String, ContentGenerator.Generated> val codeGenerators: MutableMap<String, ContentGenerator.Generated> by project.extra
val exists = generators.containsKey(name) val exists = codeGenerators.containsKey(name)
val generator = ContentGenerator().runAction(generate) 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) { if (!exists) {
java.srcDir(project.codegenDir.resolve("java/$name")) java.srcDir(project.codegenDir.resolve("java/$name"))
resources.srcDir(project.codegenDir.resolve("resources/$name")) resources.srcDir(project.codegenDir.resolve("resources/$name"))
@ -87,7 +88,7 @@ class ContentGenerator {
@JvmStatic @JvmStatic
private fun check(name: String, type: String, pattern: Regex) { 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` `java-library`
} }
extra["codeGenerators"] = LinkedHashMap<String, ContentGenerator.Generated>() var codeGenerators: MutableMap<String, ContentGenerator.Generated>? by extra(LinkedHashMap())
val jfCodegen by tasks.registering { val jfCodegen by tasks.registering {
doLast { doLast {
val generators = project.extra["codeGenerators"] as LinkedHashMap<String, ContentGenerator.Generated>
if (codegenDir.exists()) codegenDir.deleteRecursively() if (codegenDir.exists()) codegenDir.deleteRecursively()
generators.forEach { (name, generated) -> codeGenerators!!.forEach { (name, generated) ->
generated.classes.forEach { (filePath, content) -> generated.classes.forEach { (filePath, content) ->
val path = codegenDir.resolve("java").resolve(name).resolve(filePath) val path = codegenDir.resolve("java").resolve(name).resolve(filePath)
path.parentFile.mkdirs() path.parentFile.mkdirs()
@ -24,7 +23,7 @@ val jfCodegen by tasks.registering {
path.writeBytes(content) 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) dependsOn(source.value)
} }
into(buildDir.resolve("artifacts")) into(layout.buildDirectory.dir("artifacts"))
} }
tasks.deployDebug.dependsOn(moveArtifacts) tasks.deployDebug.dependsOn(moveArtifacts)

View File

@ -1,13 +1,7 @@
import io.gitlab.jfronny.scripts.* import io.gitlab.jfronny.scripts.*
import net.fabricmc.loom.task.PrepareJarRemapTask import net.fabricmc.loom.task.PrepareJarRemapTask
import net.fabricmc.loom.task.RemapJarTask 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 org.gradle.kotlin.dsl.*
import java.io.File
plugins { plugins {
id("jf.java") id("jf.java")
@ -17,7 +11,7 @@ plugins {
id("com.github.johnrengelman.shadow") 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 // Configure loom for stricter dev env
loom { loom {