mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 18:07:43 +01:00
Build using Toothpick scripts (#122)
Co-authored-by: BillyGalbreath <blake.galbreath@gmail.com>
This commit is contained in:
52
buildSrc/src/main/kotlin/ToothpickExtension.kt
Normal file
52
buildSrc/src/main/kotlin/ToothpickExtension.kt
Normal file
@@ -0,0 +1,52 @@
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.model.ObjectFactory
|
||||
import java.io.File
|
||||
import java.util.Locale
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
open class ToothpickExtension(objects: ObjectFactory) {
|
||||
lateinit var project: Project
|
||||
lateinit var forkName: String
|
||||
val forkNameLowercase
|
||||
get() = forkName.toLowerCase(Locale.ENGLISH)
|
||||
lateinit var forkVersion: String
|
||||
lateinit var groupId: String
|
||||
lateinit var minecraftVersion: String
|
||||
lateinit var nmsRevision: String
|
||||
|
||||
lateinit var upstream: String
|
||||
val upstreamLowercase
|
||||
get() = upstream.toLowerCase(Locale.ENGLISH)
|
||||
|
||||
lateinit var serverProject: ToothpickSubproject
|
||||
fun server(receiver: ToothpickSubproject.() -> Unit) {
|
||||
serverProject = ToothpickSubproject()
|
||||
receiver(serverProject)
|
||||
}
|
||||
|
||||
lateinit var apiProject: ToothpickSubproject
|
||||
fun api(receiver: ToothpickSubproject.() -> Unit) {
|
||||
apiProject = ToothpickSubproject()
|
||||
receiver(apiProject)
|
||||
}
|
||||
|
||||
val subprojects: Map<String, ToothpickSubproject>
|
||||
get() = if (::forkName.isInitialized) mapOf(
|
||||
"$forkName-API" to apiProject,
|
||||
"$forkName-Server" to serverProject
|
||||
) else emptyMap()
|
||||
|
||||
val paperDir: File by lazy {
|
||||
if (upstream == "Paper") {
|
||||
project.upstreamDir
|
||||
} else {
|
||||
project.upstreamDir.walk().find {
|
||||
it.name == "Paper" && it.isDirectory
|
||||
&& it.resolve("work/Minecraft/${minecraftVersion}").exists()
|
||||
} ?: error("Failed to find Paper directory!")
|
||||
}
|
||||
}
|
||||
|
||||
val paperWorkDir: File
|
||||
get() = paperDir.resolve("work/Minecraft/${minecraftVersion}")
|
||||
}
|
||||
Reference in New Issue
Block a user