Improve steamwar.devserver.gradle

This commit is contained in:
2025-10-24 18:32:44 +02:00
parent 139f73402a
commit 4cf963e22a
+35 -5
View File
@@ -18,6 +18,7 @@
*/ */
import java.security.MessageDigest import java.security.MessageDigest
import java.util.stream.Collectors
plugins { plugins {
@@ -87,7 +88,7 @@ class DevServer extends DefaultTask {
} }
} }
doLast { doLast {
checkHasTemplate() setupTemplate(template)
uploadDependencies() uploadDependencies()
startDevServer() startDevServer()
} }
@@ -117,12 +118,41 @@ class DevServer extends DefaultTask {
} }
} }
void checkHasTemplate() { private Process run(String... args) {
def process = new ProcessBuilder("ssh", host, "-T", "ls $template").start() List<String> arguments = new ArrayList<>();
arguments.add("ssh")
arguments.add(host)
arguments.add("-T")
arguments.addAll(Arrays.asList(args))
def process = new ProcessBuilder(arguments).start()
process.waitFor() process.waitFor()
if (new BufferedReader(new InputStreamReader(process.inputStream)).lines().count() < 4) { return process
throw new GradleException("Used template is not in your user.home directory of the given host $host") }
private boolean checkFileOnRemote(String path) {
def process = run("[ -e \"$path\" ] && echo \"true\"")
return new BufferedReader(new InputStreamReader(process.inputStream)).lines().count() > 0
}
void setupTemplate(String template) {
if (checkFileOnRemote("$template")) return
if (checkFileOnRemote("/configs/GameModes/${template}.yml")) {
println("GameMode Config exists")
def process = run("cat /configs/GameModes/${template}.yml | grep \"Folder: \"")
String serverTemplateName = new BufferedReader(new InputStreamReader(process.inputStream)).lines().collect(Collectors.joining("\n"))
.trim()
.substring("Folder: ".length())
setupTemplate(serverTemplateName)
run("ln -s $serverTemplateName $template")
return
} }
if (!checkFileOnRemote("/servers/$template")) {
throw new GradleException("Used template ($template) is not in /servers/ directory of the given host $host")
}
run("cp -r /servers/$template $template")
run("chmod u+w $template")
run("rm -r $template/plugins/*WorldEdit/")
run("rm $template/log4j2.xml")
} }
void uploadDependencies() { void uploadDependencies() {