diff --git a/buildSrc/src/steamwar.devserver.gradle b/buildSrc/src/steamwar.devserver.gradle index 06c096f0..c9ca399a 100644 --- a/buildSrc/src/steamwar.devserver.gradle +++ b/buildSrc/src/steamwar.devserver.gradle @@ -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 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() {