mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
quick-e2e: Add Context and StartScriptService to manage server environment and script generation
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package de.oliver.quicke2e;
|
||||
|
||||
import de.oliver.quicke2e.config.Configuration;
|
||||
import de.oliver.quicke2e.config.Context;
|
||||
import de.oliver.quicke2e.eula.EulaService;
|
||||
import de.oliver.quicke2e.paper.PaperDownloadService;
|
||||
import de.oliver.quicke2e.startScript.StartScriptService;
|
||||
|
||||
public class Main {
|
||||
|
||||
@@ -17,6 +19,8 @@ public class Main {
|
||||
"25565"
|
||||
);
|
||||
|
||||
Context context = new Context(config);
|
||||
|
||||
PaperDownloadService paper = new PaperDownloadService();
|
||||
// paper.downloadServerFile(config.type(), config.version(), config.build());
|
||||
|
||||
@@ -24,6 +28,9 @@ public class Main {
|
||||
if (config.eula()) {
|
||||
eula.setEulaToTrue(String.format("servers/%s_%s_%s/eula.txt", config.type(), config.version(), config.build()));
|
||||
}
|
||||
|
||||
StartScriptService startScript = new StartScriptService();
|
||||
startScript.writeStartScript(context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package de.oliver.quicke2e.config;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class Context {
|
||||
|
||||
private final Configuration configuration;
|
||||
private String actualBuildNumber;
|
||||
private Path serverEnvPath;
|
||||
private Path serverJarPath;
|
||||
private Path startScriptPath;
|
||||
|
||||
public Context(Configuration configuration) {
|
||||
this.configuration = configuration;
|
||||
this.actualBuildNumber = configuration.build();
|
||||
}
|
||||
|
||||
public Configuration configuration() {
|
||||
return configuration;
|
||||
}
|
||||
|
||||
public String actualBuildNumber() {
|
||||
return actualBuildNumber;
|
||||
}
|
||||
|
||||
public void setActualBuildNumber(String actualBuildNumber) {
|
||||
this.actualBuildNumber = actualBuildNumber;
|
||||
}
|
||||
|
||||
public String serverFileName() {
|
||||
return String.format("%s-%s-%s.jar", configuration.type(), configuration.version(), actualBuildNumber);
|
||||
}
|
||||
|
||||
public Path serverEnvPath() {
|
||||
return serverEnvPath;
|
||||
}
|
||||
|
||||
public void setServerEnvPath(Path serverEnvPath) {
|
||||
this.serverEnvPath = serverEnvPath;
|
||||
}
|
||||
|
||||
public Path serverJarPath() {
|
||||
return serverJarPath;
|
||||
}
|
||||
|
||||
public void setServerJarPath(Path serverJarPath) {
|
||||
this.serverJarPath = serverJarPath;
|
||||
}
|
||||
|
||||
public Path startScriptPath() {
|
||||
return startScriptPath;
|
||||
}
|
||||
|
||||
public void setStartScriptPath(Path startScriptPath) {
|
||||
this.startScriptPath = startScriptPath;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package de.oliver.quicke2e.startScript;
|
||||
|
||||
import de.oliver.quicke2e.config.Context;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class StartScriptService {
|
||||
|
||||
private String startScriptContent;
|
||||
|
||||
public StartScriptService() {
|
||||
try {
|
||||
startScriptContent = getResourceFileAsString("start.sh");
|
||||
} catch (IOException e) {
|
||||
startScriptContent = "echo No start script found!";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads given resource file as a string.
|
||||
*
|
||||
* @param fileName path to the resource file
|
||||
* @return the file's contents
|
||||
* @throws IOException if read fails for any reason
|
||||
*/
|
||||
private static String getResourceFileAsString(String fileName) throws IOException {
|
||||
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
|
||||
try (InputStream is = classLoader.getResourceAsStream(fileName)) {
|
||||
if (is == null) return null;
|
||||
try (InputStreamReader isr = new InputStreamReader(is);
|
||||
BufferedReader reader = new BufferedReader(isr)) {
|
||||
return reader.lines().collect(Collectors.joining(System.lineSeparator()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean writeStartScript(Context context) {
|
||||
Path startScriptPath = Path.of(String.format("%s/start.sh", context.serverEnvPath().toString()));
|
||||
|
||||
String content = startScriptContent
|
||||
.replace("%SERVER_FILE%", context.serverFileName());
|
||||
|
||||
try {
|
||||
Files.writeString(startScriptPath, content);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
||||
context.setStartScriptPath(startScriptPath);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
3
tools/quick-e2e/src/main/resources/start.sh
Normal file
3
tools/quick-e2e/src/main/resources/start.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
java -Xms4096M -Xmx4096M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar %SERVER_FILE% nogui
|
||||
Reference in New Issue
Block a user