From f31840c1f3c0645fdb4273ebdad08bd250933106 Mon Sep 17 00:00:00 2001 From: "jetbrains-junie[bot]" Date: Thu, 3 Jul 2025 14:05:47 +0000 Subject: [PATCH 1/3] fix: display help output for --help argument The JabRef CLI was modified to display help output when the `--help` argument is provided while JabRef is running, instead of passing the argument to the running instance. This change resolves the previous issue where users did not see the help output. Other command-line arguments remain unaffected. --- jabgui/src/main/java/org/jabref/Launcher.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/jabgui/src/main/java/org/jabref/Launcher.java b/jabgui/src/main/java/org/jabref/Launcher.java index a561a4cad32..194af6dc40e 100644 --- a/jabgui/src/main/java/org/jabref/Launcher.java +++ b/jabgui/src/main/java/org/jabref/Launcher.java @@ -146,6 +146,15 @@ private static void systemExit() { */ private static MultipleInstanceAction handleMultipleAppInstances(String[] args, RemotePreferences remotePreferences) { LOGGER.trace("Checking for remote handling..."); + + // Check if --help is in the arguments + boolean helpRequested = Arrays.stream(args).anyMatch(arg -> arg.equals("--help") || arg.equals("-h") || arg.equals("?")); + if (helpRequested) { + // If help is requested, we want to process it locally, not send it to the running instance + LOGGER.debug("Help requested, processing locally"); + return MultipleInstanceAction.CONTINUE; + } + if (remotePreferences.useRemoteServer()) { // Try to contact already running JabRef RemoteClient remoteClient = new RemoteClient(remotePreferences.getPort()); From 48eb33fbad9704a9fe2931836cf86a251ec92c71 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 8 Jul 2025 00:10:22 +0200 Subject: [PATCH 2/3] Parse args and check for help before multi instance handling Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> --- jabgui/src/main/java/org/jabref/Launcher.java | 41 ++++++++++--------- .../org/jabref/cli/ArgumentProcessor.java | 4 ++ 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/jabgui/src/main/java/org/jabref/Launcher.java b/jabgui/src/main/java/org/jabref/Launcher.java index 194af6dc40e..13d77beda0b 100644 --- a/jabgui/src/main/java/org/jabref/Launcher.java +++ b/jabgui/src/main/java/org/jabref/Launcher.java @@ -55,29 +55,32 @@ public static void main(String[] args) { Injector.setModelOrService(BuildInfo.class, new BuildInfo()); final JabRefGuiPreferences preferences = JabRefGuiPreferences.getInstance(); - Injector.setModelOrService(CliPreferences.class, preferences); - Injector.setModelOrService(GuiPreferences.class, preferences); - - // Early exit in case another instance is already running - MultipleInstanceAction instanceAction = handleMultipleAppInstances(args, preferences.getRemotePreferences()); - if (instanceAction == MultipleInstanceAction.SHUTDOWN) { - systemExit(); - } else if (instanceAction == MultipleInstanceAction.FOCUS) { - // Send focus command to running instance - RemotePreferences remotePreferences = preferences.getRemotePreferences(); - RemoteClient remoteClient = new RemoteClient(remotePreferences.getPort()); - remoteClient.sendFocus(); - systemExit(); - } - - configureProxy(preferences.getProxyPreferences()); - configureSSL(preferences.getSSLPreferences()); ArgumentProcessor argumentProcessor = new ArgumentProcessor( args, ArgumentProcessor.Mode.INITIAL_START, preferences); + if (!argumentProcessor.getGuiCli().usageHelpRequested) { + Injector.setModelOrService(CliPreferences.class, preferences); + Injector.setModelOrService(GuiPreferences.class, preferences); + + // Early exit in case another instance is already running + MultipleInstanceAction instanceAction = handleMultipleAppInstances(args, preferences.getRemotePreferences()); + if (instanceAction == MultipleInstanceAction.SHUTDOWN) { + systemExit(); + } else if (instanceAction == MultipleInstanceAction.FOCUS) { + // Send focus command to running instance + RemotePreferences remotePreferences = preferences.getRemotePreferences(); + RemoteClient remoteClient = new RemoteClient(remotePreferences.getPort()); + remoteClient.sendFocus(); + systemExit(); + } + + configureProxy(preferences.getProxyPreferences()); + configureSSL(preferences.getSSLPreferences()); + } + List uiCommands = argumentProcessor.processArguments(); if (argumentProcessor.shouldShutDown()) { systemExit(); @@ -146,7 +149,7 @@ private static void systemExit() { */ private static MultipleInstanceAction handleMultipleAppInstances(String[] args, RemotePreferences remotePreferences) { LOGGER.trace("Checking for remote handling..."); - + // Check if --help is in the arguments boolean helpRequested = Arrays.stream(args).anyMatch(arg -> arg.equals("--help") || arg.equals("-h") || arg.equals("?")); if (helpRequested) { @@ -154,7 +157,7 @@ private static MultipleInstanceAction handleMultipleAppInstances(String[] args, LOGGER.debug("Help requested, processing locally"); return MultipleInstanceAction.CONTINUE; } - + if (remotePreferences.useRemoteServer()) { // Try to contact already running JabRef RemoteClient remoteClient = new RemoteClient(remotePreferences.getPort()); diff --git a/jabgui/src/main/java/org/jabref/cli/ArgumentProcessor.java b/jabgui/src/main/java/org/jabref/cli/ArgumentProcessor.java index 3a3d3b744c0..1ebbfcadc7b 100644 --- a/jabgui/src/main/java/org/jabref/cli/ArgumentProcessor.java +++ b/jabgui/src/main/java/org/jabref/cli/ArgumentProcessor.java @@ -102,4 +102,8 @@ private void resetPreferences() { public boolean shouldShutDown() { return !guiNeeded; } + + public GuiCommandLine getGuiCli() { + return guiCli; + } } From 9a0bff7434a26696b30e0421c920218f5607d766 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 8 Jul 2025 00:10:32 +0200 Subject: [PATCH 3/3] Remove junie solution --- jabgui/src/main/java/org/jabref/Launcher.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/jabgui/src/main/java/org/jabref/Launcher.java b/jabgui/src/main/java/org/jabref/Launcher.java index 13d77beda0b..5b4a3d9f4aa 100644 --- a/jabgui/src/main/java/org/jabref/Launcher.java +++ b/jabgui/src/main/java/org/jabref/Launcher.java @@ -150,14 +150,6 @@ private static void systemExit() { private static MultipleInstanceAction handleMultipleAppInstances(String[] args, RemotePreferences remotePreferences) { LOGGER.trace("Checking for remote handling..."); - // Check if --help is in the arguments - boolean helpRequested = Arrays.stream(args).anyMatch(arg -> arg.equals("--help") || arg.equals("-h") || arg.equals("?")); - if (helpRequested) { - // If help is requested, we want to process it locally, not send it to the running instance - LOGGER.debug("Help requested, processing locally"); - return MultipleInstanceAction.CONTINUE; - } - if (remotePreferences.useRemoteServer()) { // Try to contact already running JabRef RemoteClient remoteClient = new RemoteClient(remotePreferences.getPort());