forked from SteamWar/SteamWar
Improve steamwar.devserver.gradle
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user