[FEATURE] Включена фитча customDir

This commit is contained in:
Gravit 2019-03-12 15:24:48 +07:00
parent f157e9c01f
commit 88be2a623b
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
5 changed files with 26 additions and 5 deletions

View file

@ -1,6 +1,7 @@
package ru.gravit.launcher;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.launcher.client.DirBridge;
import ru.gravit.utils.helper.EnvHelper;
import ru.gravit.utils.helper.IOHelper;
import ru.gravit.utils.helper.JVMHelper;
@ -19,18 +20,22 @@ public static void main(String[] arguments) throws IOException, InterruptedExcep
LogHelper.printLicense("Launcher");
LogHelper.info("Restart Launcher with JavaAgent...");
LogHelper.info("If need debug output use -Dlauncher.debug=true");
LogHelper.info("If need stacktrace output use -Dlauncher.stacktrace=true");
JVMHelper.checkStackTrace(ClientLauncherWrapper.class);
JVMHelper.verifySystemProperties(Launcher.class, true);
EnvHelper.checkDangerousParams();
LogHelper.debug("Restart Launcher");
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.inheritIO();
if (LogHelper.isDebugEnabled()) processBuilder.inheritIO();
Path javaBin = IOHelper.resolveJavaBin(Paths.get(System.getProperty("java.home")));
List<String> args = new LinkedList<>();
args.add(javaBin.toString());
String pathLauncher = IOHelper.getCodeSource(ClientLauncher.class).toString();
args.add(JVMHelper.jvmProperty(LogHelper.DEBUG_PROPERTY, Boolean.toString(LogHelper.isDebugEnabled())));
args.add(JVMHelper.jvmProperty(LogHelper.STACKTRACE_PROPERTY, Boolean.toString(LogHelper.isStacktraceEnabled())));
JVMHelper.addSystemPropertyToArgs(args, DirBridge.CUSTOMDIR_PROPERTY);
JVMHelper.addSystemPropertyToArgs(args, DirBridge.USE_CUSTOMDIR_PROPERTY);
JVMHelper.addSystemPropertyToArgs(args, DirBridge.USE_OPTDIR_PROPERTY);
Collections.addAll(args, "-javaagent:".concat(pathLauncher));
Collections.addAll(args, "-cp");
Collections.addAll(args, pathLauncher);

View file

@ -58,7 +58,6 @@ private LauncherEngine() {
@LauncherAPI
public void start(String... args) throws Throwable {
LogHelper.debug("%d", LauncherSettings.settingsMagic);
Launcher.modulesManager = new ClientModuleManager(this);
LauncherConfig.getAutogenConfig().initModules();
Launcher.modulesManager.preInitModules();

View file

@ -347,6 +347,9 @@ public static Process launch(
context.args.add(JVMHelper.jvmProperty(LogHelper.DEBUG_PROPERTY, Boolean.toString(LogHelper.isDebugEnabled())));
context.args.add(JVMHelper.jvmProperty(LogHelper.STACKTRACE_PROPERTY, Boolean.toString(LogHelper.isStacktraceEnabled())));
context.args.add(JVMHelper.jvmProperty(LogHelper.DEV_PROPERTY, Boolean.toString(LogHelper.isDevEnabled())));
JVMHelper.addSystemPropertyToArgs(context.args, DirBridge.CUSTOMDIR_PROPERTY);
JVMHelper.addSystemPropertyToArgs(context.args, DirBridge.USE_CUSTOMDIR_PROPERTY);
JVMHelper.addSystemPropertyToArgs(context.args, DirBridge.USE_OPTDIR_PROPERTY);
if (LauncherConfig.ADDRESS_OVERRIDE != null)
context.args.add(JVMHelper.jvmProperty(LauncherConfig.ADDRESS_OVERRIDE_PROPERTY, LauncherConfig.ADDRESS_OVERRIDE));
if (JVMHelper.OS_TYPE == OS.MUSTDIE) {

View file

@ -10,6 +10,11 @@
import java.nio.file.Paths;
public class DirBridge {
public static final String USE_CUSTOMDIR_PROPERTY = "launcher.usecustomdir";
public static final String CUSTOMDIR_PROPERTY = "launcher.customdir";
public static final String USE_OPTDIR_PROPERTY = "launcher.useoptdir";
@LauncherAPI
public static Path dir;
@LauncherAPI
@ -27,12 +32,12 @@ public static void move(Path newDir) throws IOException {
@LauncherAPI
public static Path getAppDataDir() throws IOException {
Boolean isCustomDir = Boolean.getBoolean(System.getProperty("launcher.usecustomdir", "false"));
boolean isCustomDir = Boolean.getBoolean(System.getProperty(USE_CUSTOMDIR_PROPERTY, "false"));
if (isCustomDir) {
return Paths.get(System.getProperty("launcher.customdir"));
return Paths.get(System.getProperty(CUSTOMDIR_PROPERTY));
}
if (JVMHelper.OS_TYPE == JVMHelper.OS.LINUX) {
Boolean isOpt = Boolean.getBoolean(System.getProperty("launcher.useoptdir", "false"));
boolean isOpt = Boolean.getBoolean(System.getProperty(USE_OPTDIR_PROPERTY, "false"));
if (isOpt) {
Path opt = Paths.get("/").resolve("opt");
if (!IOHelper.isDir(opt)) Files.createDirectories(opt);

View file

@ -10,6 +10,7 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.Collection;
import java.util.Locale;
import java.util.Map;
@ -155,6 +156,14 @@ public static String systemToJvmProperty(String name) {
return String.format("-D%s=%s", name, System.getProperties().getProperty(name));
}
@LauncherAPI
public static void addSystemPropertyToArgs(Collection<String> args, String name)
{
String property = System.getProperty(name);
if(property != null)
args.add(String.format("-D%s=%s", name, property));
}
public static void verifySystemProperties(Class<?> mainClass, boolean requireSystem) {
Locale.setDefault(Locale.US);