From d789c9adabbd6004e687c5d9b54d84376a8f557a Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Fri, 18 Jan 2019 00:15:32 +0100 Subject: [PATCH] pgm: Handle exceptions in Config command This avoids we show a stacktrace on the console by default when this type of exception is thrown during the run method is executed. Also externalize error message. Change-Id: I909dc77385a672d8298053b12683c0cbbf9f2aa2 Signed-off-by: Matthias Sohn --- .../eclipse/jgit/pgm/internal/CLIText.properties | 1 + .../src/org/eclipse/jgit/pgm/Config.java | 15 +++++++++------ .../org/eclipse/jgit/pgm/internal/CLIText.java | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties index 69bf1723e..418e59e48 100644 --- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties +++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties @@ -51,6 +51,7 @@ cleanRequireForce=clean.requireForce defaults to true and neither -n nor -f give clonedEmptyRepository=warning: You appear to have cloned an empty repository. cloningInto=Cloning into ''{0}''... commitLabel=commit +configOnlyListOptionSupported=only the --list option is currently supported configFileNotFound=configuration file {0} not found conflictingUsageOf_git_dir_andArguments=conflicting usage of --git-dir and arguments couldNotCreateBranch=Could not create branch {0}: {1} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java index f762c0d05..979c6fa94 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Config.java @@ -42,9 +42,9 @@ import java.io.IOException; import java.util.Set; import org.eclipse.jgit.errors.ConfigInvalidException; -import org.eclipse.jgit.errors.NotSupportedException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.StoredConfig; +import org.eclipse.jgit.pgm.internal.CLIText; import org.eclipse.jgit.storage.file.FileBasedConfig; import org.eclipse.jgit.util.FS; import org.eclipse.jgit.util.StringUtils; @@ -70,12 +70,15 @@ class Config extends TextBuiltin { /** {@inheritDoc} */ @Override - protected void run() throws Exception { - if (list) + protected void run() { + if (!list) { + throw die(CLIText.get().configOnlyListOptionSupported); + } + try { list(); - else - throw new NotSupportedException( - "only --list option is currently supported"); //$NON-NLS-1$ + } catch (IOException | ConfigInvalidException e) { + throw die(e.getMessage(), e); + } } private void list() throws IOException, ConfigInvalidException { diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java index 397b6b14b..6a8a03eaf 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java @@ -165,6 +165,7 @@ public class CLIText extends TranslationBundle { /***/ public String clonedEmptyRepository; /***/ public String cloningInto; /***/ public String commitLabel; + /***/ public String configOnlyListOptionSupported; /***/ public String conflictingUsageOf_git_dir_andArguments; /***/ public String couldNotCreateBranch; /***/ public String dateInfo;