From 992fbe41c7344a2e256012d5935a8877b79f1dea Mon Sep 17 00:00:00 2001 From: Erb Date: Thu, 8 Oct 2015 23:07:04 -0400 Subject: [PATCH] cuter usage for ExplicitBoolean --- .../spi/ExplicitBooleanOptionHandler.java | 24 +++++++++++++++++++ .../kohsuke/args4j/spi/Messages.properties | 2 +- .../kohsuke/args4j/spi/Messages_de.properties | 2 +- .../org/kohsuke/args4j/spi/OptionHandler.java | 2 +- .../args4j/ExplicitBooleanArgumentTest.java | 3 ++- .../args4j/ExplicitBooleanOptionTest.java | 13 +++++++++- 6 files changed, 41 insertions(+), 5 deletions(-) diff --git a/args4j/src/org/kohsuke/args4j/spi/ExplicitBooleanOptionHandler.java b/args4j/src/org/kohsuke/args4j/spi/ExplicitBooleanOptionHandler.java index 5ede740c..c5d553ca 100644 --- a/args4j/src/org/kohsuke/args4j/spi/ExplicitBooleanOptionHandler.java +++ b/args4j/src/org/kohsuke/args4j/spi/ExplicitBooleanOptionHandler.java @@ -5,10 +5,12 @@ import java.util.HashMap; import java.util.Map; +import java.util.ResourceBundle; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.kohsuke.args4j.OptionDef; +import org.kohsuke.args4j.ParserProperties; /** * Boolean {@link OptionHandler} that (unlike the standard {@link BooleanOptionHandler} @@ -61,4 +63,26 @@ private Boolean getBoolean(String parameter) throws CmdLineException { public String getDefaultMetaVariable() { return Messages.DEFAULT_META_EXPLICIT_BOOLEAN_OPTION_HANDLER.format(); } + + @Override + public String getNameAndMeta(ResourceBundle rb, ParserProperties properties) { + String str = option.isArgument() ? "" : option.toString(); + String meta = getMetaVariable(rb); + if (meta != null) { + if (option.isArgument()) { + str += '['; + } else { + String delimiter = properties.getOptionValueDelimiter(); + if (delimiter.trim().equals(delimiter)) { + // not blank, bracket before delimiter + str += '[' + delimiter; + } else { + // blank, bracket after space + str += delimiter + '['; + } + } + str += meta + ']'; + } + return str; + } } diff --git a/args4j/src/org/kohsuke/args4j/spi/Messages.properties b/args4j/src/org/kohsuke/args4j/spi/Messages.properties index e03bb6be..9124c15b 100644 --- a/args4j/src/org/kohsuke/args4j/spi/Messages.properties +++ b/args4j/src/org/kohsuke/args4j/spi/Messages.properties @@ -25,7 +25,7 @@ ILLEGAL_UUID = \ ILLEGAL_PATH = \ Failed to parse path "{0}" DEFAULT_META_EXPLICIT_BOOLEAN_OPTION_HANDLER = \ - VALUE + true|false DEFAULT_META_FILE_OPTION_HANDLER = \ FILE DEFAULT_META_INET_ADDRESS_OPTION_HANDLER = \ diff --git a/args4j/src/org/kohsuke/args4j/spi/Messages_de.properties b/args4j/src/org/kohsuke/args4j/spi/Messages_de.properties index b4164927..59d706d7 100644 --- a/args4j/src/org/kohsuke/args4j/spi/Messages_de.properties +++ b/args4j/src/org/kohsuke/args4j/spi/Messages_de.properties @@ -33,7 +33,7 @@ ILLEGAL_UUID = \ ILLEGAL_PATH = \ Pfad "{0}" ist nicht g\u00fcltig DEFAULT_META_EXPLICIT_BOOLEAN_OPTION_HANDLER = \ - WERT + true|false DEFAULT_META_FILE_OPTION_HANDLER = \ DATEI DEFAULT_META_INET_ADDRESS_OPTION_HANDLER = \ diff --git a/args4j/src/org/kohsuke/args4j/spi/OptionHandler.java b/args4j/src/org/kohsuke/args4j/spi/OptionHandler.java index cb1f0095..ce726660 100644 --- a/args4j/src/org/kohsuke/args4j/spi/OptionHandler.java +++ b/args4j/src/org/kohsuke/args4j/spi/OptionHandler.java @@ -107,7 +107,7 @@ public final String getNameAndMeta(ResourceBundle rb) { * @param properties * Affects the formatting behaviours. */ - public final String getNameAndMeta(ResourceBundle rb, ParserProperties properties) { + public String getNameAndMeta(ResourceBundle rb, ParserProperties properties) { String str = option.isArgument() ? "" : option.toString(); String meta = getMetaVariable(rb); if (meta != null) { diff --git a/args4j/test/org/kohsuke/args4j/ExplicitBooleanArgumentTest.java b/args4j/test/org/kohsuke/args4j/ExplicitBooleanArgumentTest.java index cab39502..45250be5 100644 --- a/args4j/test/org/kohsuke/args4j/ExplicitBooleanArgumentTest.java +++ b/args4j/test/org/kohsuke/args4j/ExplicitBooleanArgumentTest.java @@ -94,7 +94,8 @@ public void testUsage() { try { parser.parseArgument(args); } catch (CmdLineException e) { - assertUsageContains("Usage message should contain 'VAL'", "VAL"); + // This tests 2 things + assertUsageContains("Usage message should contain '[true|false]'", "[true|false]"); } } diff --git a/args4j/test/org/kohsuke/args4j/ExplicitBooleanOptionTest.java b/args4j/test/org/kohsuke/args4j/ExplicitBooleanOptionTest.java index cca4545c..abdbb767 100644 --- a/args4j/test/org/kohsuke/args4j/ExplicitBooleanOptionTest.java +++ b/args4j/test/org/kohsuke/args4j/ExplicitBooleanOptionTest.java @@ -100,11 +100,22 @@ public void testIllegalBoolean() { public void testUsage() { args = new String[] { "-wrong" }; + try { parser.parseArgument(args); } catch (CmdLineException e) { - assertUsageContains("Usage message should contain 'VAL'", "VAL"); + assertUsageContains("Usage message should contain '[true|false]'", "[true|false]"); } } + public void testUsageWithEquals() { + args = new String[] { "-wrong" }; + parser = new CmdLineParser(testObject, ParserProperties.defaults().withOptionValueDelimiter("=")); + + try { + parser.parseArgument(args); + } catch (CmdLineException e) { + assertUsageContains("Usage message should contain '[=true|false]'", "[=true|false]"); + } + } }