diff --git a/src/main/java/org/cryptomator/common/Environment.java b/src/main/java/org/cryptomator/common/Environment.java index 3043c5a92..d9dec7b89 100644 --- a/src/main/java/org/cryptomator/common/Environment.java +++ b/src/main/java/org/cryptomator/common/Environment.java @@ -34,10 +34,7 @@ public class Environment { private static final String PLUGIN_DIR_PROP_NAME = "cryptomator.pluginDir"; private static final String TRAY_ICON_PROP_NAME = "cryptomator.showTrayIcon"; - private Environment() { - //hack, needed for logging directory to be setup correctly - PropertiesPreprocessor.run(); - } + private Environment() {} public void log() { LOG.info("user.home: {}", System.getProperty("user.home")); diff --git a/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java b/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java index 7dcda19ee..683b04aa2 100644 --- a/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java +++ b/src/main/java/org/cryptomator/common/PropertiesPreprocessor.java @@ -33,9 +33,9 @@ public class PropertiesPreprocessor { return TEMPLATE.matcher(value).replaceAll(match -> // switch (match.group(1)) { case "appdir" -> ENV.get("APPDIR"); - case "appdata" -> ENV.get("APPDATA").replace("\\","\\\\"); - case "localappdata" -> ENV.get("LOCALAPPDATA").replace("\\","\\\\"); - case "userhome" -> System.getProperty("user.home").replace("\\","\\\\"); + case "appdata" -> ENV.get("APPDATA"); + case "localappdata" -> ENV.get("LOCALAPPDATA"); + case "userhome" -> System.getProperty("user.home"); default -> { LOG.warn("Found unknown variable @{{}} in property value {}.", match.group(), value); yield match.group(); diff --git a/src/main/java/org/cryptomator/launcher/Cryptomator.java b/src/main/java/org/cryptomator/launcher/Cryptomator.java index faf88c91a..f08d70c37 100644 --- a/src/main/java/org/cryptomator/launcher/Cryptomator.java +++ b/src/main/java/org/cryptomator/launcher/Cryptomator.java @@ -29,7 +29,6 @@ import java.util.concurrent.Executors; @Singleton public class Cryptomator { - private static final Environment ENV = Environment.getInstance(); private static final long STARTUP_TIME = System.currentTimeMillis(); // DaggerCryptomatorComponent gets generated by Dagger. // Run Maven and include target/generated-sources/annotations in your IDE. @@ -38,13 +37,15 @@ public class Cryptomator { private final DebugMode debugMode; private final SupportedLanguages supportedLanguages; + private final Environment env; private final Lazy ipcMessageHandler; private final ShutdownHook shutdownHook; @Inject - Cryptomator(DebugMode debugMode, SupportedLanguages supportedLanguages, Lazy ipcMessageHandler, ShutdownHook shutdownHook) { + Cryptomator(DebugMode debugMode, SupportedLanguages supportedLanguages, Environment env, Lazy ipcMessageHandler, ShutdownHook shutdownHook) { this.debugMode = debugMode; this.supportedLanguages = supportedLanguages; + this.env = env; this.ipcMessageHandler = ipcMessageHandler; this.shutdownHook = shutdownHook; } @@ -63,6 +64,7 @@ public class Cryptomator { System.out.printf("Cryptomator version %s (build %s)%n", appVer, buildNumber); return; } + PropertiesPreprocessor.run(); int exitCode = CRYPTOMATOR_COMPONENT.application().run(args); LOG.info("Exit {}", exitCode); System.exit(exitCode); // end remaining non-daemon threads. @@ -75,9 +77,9 @@ public class Cryptomator { * @return Nonzero exit code in case of an error. */ private int run(String[] args) { - ENV.log(); + env.log(); LOG.debug("Dagger graph initialized after {}ms", System.currentTimeMillis() - STARTUP_TIME); - LOG.info("Starting Cryptomator {} on {} {} ({})", ENV.getAppVersion(), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH); + LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion(), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH); debugMode.initialize(); supportedLanguages.applyPreferred(); @@ -85,7 +87,7 @@ public class Cryptomator { * Attempts to create an IPC connection to a running Cryptomator instance and sends it the given args. * If no external process could be reached, the args will be handled by the loopback IPC endpoint. */ - try (var communicator = IpcCommunicator.create(ENV.ipcSocketPath().toList())) { + try (var communicator = IpcCommunicator.create(env.ipcSocketPath().toList())) { if (communicator.isClient()) { communicator.sendHandleLaunchargs(List.of(args)); communicator.sendRevealRunningApp();