BreakMe/build.gradle.kts

72 lines
2.7 KiB
Plaintext
Raw Normal View History

2022-12-02 18:59:18 +01:00
import com.squareup.javapoet.ClassName
import com.squareup.javapoet.ParameterizedTypeName
import com.squareup.javapoet.TypeName
import java.nio.file.Files
import io.gitlab.jfronny.scripts.*
import java.util.LinkedList
import javax.lang.model.element.Modifier.*
plugins {
id("jfmod") version "1.2-SNAPSHOT"
id("jf.codegen") version "1.2-SNAPSHOT"
id("io.gitlab.jfronny.libjf.libjf-config-compiler-plugin")
}
2022-12-03 16:19:36 +01:00
if (flavour == "") flavour = "modrinth"
2022-12-02 18:59:18 +01:00
dependencies {
modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v1:${prop("libjf_version")}")
// Dev env
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${prop("libjf_version")}")
modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny-v1:${prop("libjf_version")}")
modLocalRuntime("net.fabricmc.fabric-api:fabric-api:${prop("fabric_version")}")
2022-12-07 22:30:46 +01:00
modLocalRuntime("com.terraformersmc:modmenu:5.0.0-alpha.4")
2022-12-02 18:59:18 +01:00
}
fun list(`package`: String) = Files.list(projectDir.resolve("src/main/java").resolve(`package`.replace('.', '/')).toPath()).use { stream ->
stream
.map { it.fileName.toString() }
.map { it.substring(0, it.lastIndexOf('.')) }
.filter { it.endsWith("Provider") }
.map { ClassName.get(`package`, it) }
.toList()
}
val classes = LinkedList(list("io.gitlab.jfronny.breakme.crash.safe"))
2022-12-03 16:19:36 +01:00
if (flavour == "curseforge") {
2022-12-02 18:59:18 +01:00
sourceSets.main.get().java.filter.exclude("**/unsafe/*")
sourceSets.main.get().resources.exclude("**/native/*")
} else {
classes.addAll(list("io.gitlab.jfronny.breakme.crash.unsafe"))
}
sourceSets {
main {
generate(project) {
`class`("io.gitlab.jfronny.breakme.crash", "KnownProviders") {
modifiers(PUBLIC)
val type = ParameterizedTypeName.get(ClassName.get(Map::class.java), TypeName.get(String::class.java), ClassName.get("io.gitlab.jfronny.breakme.crash", "CrashProvider"))
field(type, "PROVIDERS", PUBLIC, STATIC, FINAL) {
initializer {
add("Map.of(\$>")
if (!classes.isEmpty()) {
indent()
var first = false
for (klazz in classes) {
if (!first) first = true
else add(",")
val name = klazz.simpleName()
add("\n\$S, new \$T()", name.substring(0, name.length - "Provider".length), klazz)
}
add("\n")
}
add("\$<)")
}
}
}
}
}
}