diff --git a/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/I18n.java b/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/I18n.java index a7ddecbbac..dbba68b7ab 100644 --- a/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/I18n.java +++ b/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/I18n.java @@ -50,6 +50,9 @@ import java.util.ResourceBundle; public class I18n { + /** Field description */ + public static final String ERROR = "error"; + /** Field description */ public static final String GROUP_NOT_FOUND = "groupNotFound"; diff --git a/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/cmd/SubCommand.java b/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/cmd/SubCommand.java index 6226781246..09dcf344ef 100644 --- a/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/cmd/SubCommand.java +++ b/scm-clients/scm-cli-client/src/main/java/sonia/scm/cli/cmd/SubCommand.java @@ -126,9 +126,19 @@ public abstract class SubCommand } catch (CmdLineException ex) { + if (logger.isWarnEnabled()) + { + logger.warn("could not parse comannd line", ex); + } - // todo error handling - logger.error("could not parse command line", ex); + if (!help) + { + output.append(i18n.getMessage(I18n.ERROR)).append(": "); + output.println(ex.getMessage()); + output.println(); + } + + printHelp(parser); } } @@ -183,6 +193,18 @@ public abstract class SubCommand return session; } + /** + * Method description + * + * + * @param parser + */ + protected void printHelp(CmdLineParser parser) + { + parser.printUsage(output, i18n.getBundle()); + System.exit(1); + } + //~--- fields --------------------------------------------------------------- /** Field description */ diff --git a/scm-clients/scm-cli-client/src/main/resources/sonia/resources/i18n.properties b/scm-clients/scm-cli-client/src/main/resources/sonia/resources/i18n.properties index 379ed14ea9..3844645758 100644 --- a/scm-clients/scm-cli-client/src/main/resources/sonia/resources/i18n.properties +++ b/scm-clients/scm-cli-client/src/main/resources/sonia/resources/i18n.properties @@ -29,6 +29,7 @@ VAL = value FILE = file +error = Error subCommandsTitle = SubCommands