don't use buildDir, take advantage of kt dsl
This commit is contained in:
parent
32b8efd6ca
commit
4f312a9c0d
|
@ -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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue