From b3d8df0da01dd50a6bc68b98bca53ae8067713d8 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 20 Jun 2023 18:08:31 +0200 Subject: [PATCH] fix missing logDir path resolution --- .../java/org/cryptomator/common/Environment.java | 5 ++++- .../cryptomator/common/PropertiesPreprocessor.java | 6 +++--- .../java/org/cryptomator/launcher/Cryptomator.java | 12 +++++------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/cryptomator/common/Environment.java b/src/main/java/org/cryptomator/common/Environment.java index d9dec7b89..3043c5a92 100644 --- a/src/main/java/org/cryptomator/common/Environment.java +++ b/src/main/java/org/cryptomator/common/Environment.java @@ -34,7 +34,10 @@ 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() {} + private Environment() { + //hack, needed for logging directory to be setup correctly + PropertiesPreprocessor.run(); + } 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 683b04aa2..7dcda19ee 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"); - case "localappdata" -> ENV.get("LOCALAPPDATA"); - case "userhome" -> System.getProperty("user.home"); + case "appdata" -> ENV.get("APPDATA").replace("\\","\\\\"); + case "localappdata" -> ENV.get("LOCALAPPDATA").replace("\\","\\\\"); + case "userhome" -> System.getProperty("user.home").replace("\\","\\\\"); 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 f08d70c37..faf88c91a 100644 --- a/src/main/java/org/cryptomator/launcher/Cryptomator.java +++ b/src/main/java/org/cryptomator/launcher/Cryptomator.java @@ -29,6 +29,7 @@ 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. @@ -37,15 +38,13 @@ 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, Environment env, Lazy ipcMessageHandler, ShutdownHook shutdownHook) { + Cryptomator(DebugMode debugMode, SupportedLanguages supportedLanguages, Lazy ipcMessageHandler, ShutdownHook shutdownHook) { this.debugMode = debugMode; this.supportedLanguages = supportedLanguages; - this.env = env; this.ipcMessageHandler = ipcMessageHandler; this.shutdownHook = shutdownHook; } @@ -64,7 +63,6 @@ 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. @@ -77,9 +75,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(); @@ -87,7 +85,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();