mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-18 10:32:30 +00:00
* Bump version to 6.4.1 * fix fabric dev env * Invert exposed ore logic (#433) * Invert exposed ore logic * Bump ore addon version * Use logger in Gradle over println (#434) * Log info instead of println in gradle scripts * Missed buildSrc printlns --------- Co-authored-by: Zoë <duplexsys@protonmail.com>
48 lines
1.6 KiB
Kotlin
48 lines
1.6 KiB
Kotlin
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
|
import java.io.File
|
|
import java.util.function.Predicate
|
|
import org.gradle.api.Project
|
|
import org.gradle.api.Task
|
|
import org.gradle.kotlin.dsl.extra
|
|
import kotlin.streams.asStream
|
|
|
|
|
|
/**
|
|
* Configures a directory where addons will be put.
|
|
*/
|
|
fun Project.addonDir(dir: File, task: Task) {
|
|
val moveAddons = tasks.register("moveAddons" + task.name) {
|
|
dependsOn("compileAddons")
|
|
doLast {
|
|
dir.parentFile.mkdirs()
|
|
matchingAddons(dir) {
|
|
it.name.startsWith("Terra-") // Assume everything that starts with Terra- is a core addon.
|
|
}.forEach {
|
|
logger.info("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}"
|
|
|
|
logger.info("Copying addon ${jar.archiveFileName.get()} to ${target.absolutePath}. Base name: $base")
|
|
|
|
jar.archiveFile.orNull?.asFile?.copyTo(target)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
task.dependsOn(moveAddons)
|
|
}
|
|
|
|
fun matchingAddons(dir: File, matcher: Predicate<File>): Set<File> {
|
|
val matching = HashSet<File>()
|
|
dir.walk().asStream().filter(matcher).forEach(matching::add)
|
|
return matching
|
|
}
|