improve addonDir addon installation

This commit is contained in:
dfsek 2022-06-07 10:19:42 -07:00
parent 5de8df188a
commit db0067a6d9

View File

@ -3,7 +3,6 @@ import java.io.File
import java.util.function.Predicate import java.util.function.Predicate
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.jvm.tasks.Jar
import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.extra
import kotlin.streams.asStream import kotlin.streams.asStream
@ -12,28 +11,33 @@ import kotlin.streams.asStream
* Configures a directory where addons will be put. * Configures a directory where addons will be put.
*/ */
fun Project.addonDir(dir: File, task: Task) { fun Project.addonDir(dir: File, task: Task) {
task.dependsOn("compileAddons") val moveAddons = tasks.register("moveAddons" + task.name) {
task.doFirst { dependsOn("compileAddons")
dir.parentFile.mkdirs() doLast {
matchingAddons(dir) { dir.parentFile.mkdirs()
it.name.startsWith("Terra-") // Assume everything that starts with Terra- is a core addon. matchingAddons(dir) {
}.forEach { it.name.startsWith("Terra-") // Assume everything that starts with Terra- is a core addon.
println("Deleting old addon: " + it.absolutePath) }.forEach {
it.delete() println("Deleting old addon: " + it.absolutePath)
it.delete()
}
forSubProjects(":common:addons") {
val jar = tasks.named("shadowJar").get() as ShadowJar
val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else ""
val target = File(dir, boot + jar.archiveFileName.get())
val base = "${jar.archiveBaseName.get()}-${version}"
println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base")
jar.archiveFile.orNull?.asFile?.copyTo(target)
}
}
} }
forSubProjects(":common:addons") {
val jar = tasks.named("shadowJar").get() as ShadowJar task.dependsOn(moveAddons)
val boot = if (extra.has("bootstrap") && extra.get("bootstrap") as Boolean) "bootstrap/" else ""
val target = File(dir, boot + jar.archiveFileName.get())
val base = "${jar.archiveBaseName.get()}-${version}"
println("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base")
jar.archiveFile.orNull?.asFile?.copyTo(target)
}
}
} }
fun matchingAddons(dir: File, matcher: Predicate<File>): Set<File> { fun matchingAddons(dir: File, matcher: Predicate<File>): Set<File> {