Paper server update rework and support for offline mode.

This commit is contained in:
Alex Endfinger
2022-07-11 08:15:06 -04:00
parent e7d87c638c
commit 7640782161
2 changed files with 34 additions and 27 deletions

View File

@ -16,7 +16,7 @@ open class SetupPaperServer : DefaultTask() {
@get:Input @get:Input
@set:Option(option = "update", description = "Update Paper Server") @set:Option(option = "update", description = "Update Paper Server")
var shouldUpdatePaperServer = false var shouldUpdatePaperServer = true
private val paperVersionClient = PaperVersionClient() private val paperVersionClient = PaperVersionClient()
@ -58,6 +58,14 @@ open class SetupPaperServer : DefaultTask() {
} }
private fun downloadLatestBuild(paperVersionGroup: String, paperJarFile: File) { private fun downloadLatestBuild(paperVersionGroup: String, paperJarFile: File) {
if (project.gradle.startParameter.isOffline) {
if (!paperJarFile.exists()) {
throw RuntimeException("Offline mode is enabled and Paper has not been downloaded.")
} else {
logger.lifecycle("Offline mode is enabled, skipping Paper update.")
return
}
}
val builds = paperVersionClient.getVersionBuilds(paperVersionGroup) val builds = paperVersionClient.getVersionBuilds(paperVersionGroup)
val build = builds.last() val build = builds.last()
val download = build.downloads["application"]!! val download = build.downloads["application"]!!

View File

@ -2,6 +2,7 @@ package lgbt.mystic.foundation.concrete
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.tasks.TaskContainer
import org.gradle.api.tasks.TaskOutputs import org.gradle.api.tasks.TaskOutputs
import java.nio.file.FileSystems import java.nio.file.FileSystems
import java.nio.file.Path import java.nio.file.Path
@ -9,41 +10,39 @@ import java.nio.file.Path
internal fun Project.isPluginProject() = plugins.hasPlugin(ConcretePluginPlugin::class.java) internal fun Project.isPluginProject() = plugins.hasPlugin(ConcretePluginPlugin::class.java)
internal fun Project.findPluginProjects() = allprojects.filter { project -> project.isPluginProject() } internal fun Project.findPluginProjects() = allprojects.filter { project -> project.isPluginProject() }
internal inline fun <reified T> TaskContainer.find(name: String) =
findByName(name) as T?
internal val Project.shadowJarTask: ShadowJar? internal val Project.shadowJarTask: ShadowJar?
get() = get() = project.tasks.find<ShadowJar>("shadowJar")
if (project.tasks.names.contains("shadowJar"))
project.tasks.getByName("shadowJar") as ShadowJar
else null
internal val Project.shadowJarOutputs: TaskOutputs? internal val Project.shadowJarOutputs: TaskOutputs?
get() = shadowJarTask?.outputs get() = shadowJarTask?.outputs
internal val Project.concreteRootExtension: ConcreteExtension internal val Project.concreteRootExtension: ConcreteExtension
get() { get() = findTargetParent(
val direct = extensions.findByType(ConcreteExtension::class.java) valid = { extensions.findByType(ConcreteExtension::class.java) != null },
if (direct != null) { extract = { extensions.findByType(ConcreteExtension::class.java)!! },
return direct error = { "Failed to find concrete root. Did you apply the concrete root plugin?" }
} )
if (parent != null) {
return parent!!.concreteRootExtension
}
throw RuntimeException("Failed to find concrete extension. Did you apply the concrete root plugin?")
}
internal val Project.concreteRootProject: Project internal val Project.concreteRootProject: Project
get() { get() = findTargetParent(
val direct = extensions.findByType(ConcreteExtension::class.java) valid = { extensions.findByType(ConcreteExtension::class.java) != null },
if (direct != null) { extract = { this },
return this error = { "Failed to find concrete root. Did you apply the concrete root plugin?" }
)
internal fun <T> Project.findTargetParent(valid: Project.() -> Boolean, extract: Project.() -> T, error: () -> String): T {
if (valid(this)) {
return extract(this)
} }
if (parent != null) { if (parent != null) {
return parent!!.concreteRootProject return parent!!.findTargetParent(valid, extract, error)
} }
throw RuntimeException("Failed to find concrete root. Did you apply the concrete root plugin?") throw RuntimeException(error())
} }
internal fun TaskOutputs.allFilesRelativeToPath(root: Path): List<Path> = files.map { root.relativize(it.toPath()) } internal fun TaskOutputs.allFilesRelativeToPath(root: Path): List<Path> = files.map { root.relativize(it.toPath()) }