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.util.stream.Collectors
plugins {
@@ -87,7 +88,7 @@ class DevServer extends DefaultTask {
}
}
doLast {
checkHasTemplate()
setupTemplate(template)
uploadDependencies()
startDevServer()
}
@@ -117,12 +118,41 @@ class DevServer extends DefaultTask {
}
}
void checkHasTemplate() {
def process = new ProcessBuilder("ssh", host, "-T", "ls $template").start()
private Process run(String... args) {
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()
if (new BufferedReader(new InputStreamReader(process.inputStream)).lines().count() < 4) {
throw new GradleException("Used template is not in your user.home directory of the given host $host")
return process
}
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() {