This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-cli.git
commit e852acf572129fa8b2e3824b0e23a32a074e832f Author: Gary Gregory <[email protected]> AuthorDate: Sat Nov 8 15:08:23 2025 -0500 Reuse constants Use forEachRemaining --- .../java/org/apache/commons/cli/DefaultParser.java | 19 +++++++++++-------- src/main/java/org/apache/commons/cli/GnuParser.java | 12 +++++++----- .../java/org/apache/commons/cli/HelpFormatter.java | 15 +++++++++------ src/main/java/org/apache/commons/cli/OptionGroup.java | 6 ++++-- src/main/java/org/apache/commons/cli/Parser.java | 19 ++++++++++--------- src/main/java/org/apache/commons/cli/PosixParser.java | 16 +++++++++------- src/main/java/org/apache/commons/cli/Util.java | 6 ++++-- .../org/apache/commons/cli/help/OptionFormatter.java | 2 +- 8 files changed, 55 insertions(+), 40 deletions(-) diff --git a/src/main/java/org/apache/commons/cli/DefaultParser.java b/src/main/java/org/apache/commons/cli/DefaultParser.java index 832ad565..85a209cc 100644 --- a/src/main/java/org/apache/commons/cli/DefaultParser.java +++ b/src/main/java/org/apache/commons/cli/DefaultParser.java @@ -25,6 +25,8 @@ import java.util.Properties; import java.util.function.Consumer; import java.util.function.Supplier; +import org.apache.commons.cli.help.OptionFormatter; + /** * Default parser. * @@ -611,13 +613,13 @@ public class DefaultParser implements CommandLineParser { currentToken = token; if (skipParsing) { addArg(token); - } else if ("--".equals(token)) { + } else if (OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(token)) { skipParsing = true; } else if (currentOption != null && currentOption.acceptsArg() && isArgument(token)) { currentOption.processValue(stripLeadingAndTrailingQuotesDefaultOn(token)); - } else if (token.startsWith("--")) { + } else if (token.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) { handleLongOption(token); - } else if (token.startsWith("-") && !"-".equals(token)) { + } else if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) && !OptionFormatter.DEFAULT_OPT_PREFIX.equals(token)) { handleShortAndLongOption(token); } else { handleUnknownToken(token); @@ -638,10 +640,11 @@ public class DefaultParser implements CommandLineParser { * @since 1.10.0 */ protected void handleUnknownToken(final String token) throws ParseException { - if (token.startsWith("-") && token.length() > 1 && nonOptionAction == NonOptionAction.THROW) { + if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) && token.length() > 1 && nonOptionAction == NonOptionAction.THROW) { throw new UnrecognizedOptionException("Unrecognized option: " + token, token); } - if (!token.startsWith("-") || token.equals("-") || token.length() > 1 && nonOptionAction != NonOptionAction.IGNORE) { + if (!token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) || token.equals(OptionFormatter.DEFAULT_OPT_PREFIX) + || token.length() > 1 && nonOptionAction != NonOptionAction.IGNORE) { addArg(token); } if (nonOptionAction == NonOptionAction.STOP) { @@ -673,7 +676,7 @@ public class DefaultParser implements CommandLineParser { * @param token */ private boolean isLongOption(final String token) { - if (token == null || !token.startsWith("-") || token.length() == 1) { + if (token == null || !token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) || token.length() == 1) { return false; } final int pos = indexOfEqual(token); @@ -682,7 +685,7 @@ public class DefaultParser implements CommandLineParser { // long or partial long options (--L, -L, --L=V, -L=V, --l, --l=V) return true; } - if (getLongPrefix(token) != null && !token.startsWith("--")) { + if (getLongPrefix(token) != null && !token.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) { // -LV return true; } @@ -719,7 +722,7 @@ public class DefaultParser implements CommandLineParser { */ private boolean isShortOption(final String token) { // short options (-S, -SV, -S=V, -SV1=V2, -S1S2) - if (token == null || !token.startsWith("-") || token.length() == 1) { + if (token == null || !token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) || token.length() == 1) { return false; } // remove leading "-" and "=value" diff --git a/src/main/java/org/apache/commons/cli/GnuParser.java b/src/main/java/org/apache/commons/cli/GnuParser.java index d0cb949b..6d2b8715 100644 --- a/src/main/java/org/apache/commons/cli/GnuParser.java +++ b/src/main/java/org/apache/commons/cli/GnuParser.java @@ -20,6 +20,8 @@ package org.apache.commons.cli; import java.util.ArrayList; import java.util.List; +import org.apache.commons.cli.help.OptionFormatter; + /** * The class GnuParser provides an implementation of the {@link Parser#flatten(Options, String[], boolean) flatten} * method. @@ -57,12 +59,12 @@ public class GnuParser extends Parser { for (int i = 0; i < arguments.length; i++) { final String arg = arguments[i]; if (arg != null) { - if ("--".equals(arg)) { + if (OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(arg)) { eatTheRest = true; - tokens.add("--"); - } else if ("-".equals(arg)) { - tokens.add("-"); - } else if (arg.startsWith("-")) { + tokens.add(OptionFormatter.DEFAULT_LONG_OPT_PREFIX); + } else if (OptionFormatter.DEFAULT_OPT_PREFIX.equals(arg)) { + tokens.add(OptionFormatter.DEFAULT_OPT_PREFIX); + } else if (arg.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) { final String opt = Util.stripLeadingHyphens(arg); if (options.hasOption(opt)) { tokens.add(arg); diff --git a/src/main/java/org/apache/commons/cli/HelpFormatter.java b/src/main/java/org/apache/commons/cli/HelpFormatter.java index f3456dc9..fb9da62e 100644 --- a/src/main/java/org/apache/commons/cli/HelpFormatter.java +++ b/src/main/java/org/apache/commons/cli/HelpFormatter.java @@ -34,6 +34,9 @@ import java.util.Objects; import java.util.function.Function; import java.util.function.Supplier; +import org.apache.commons.cli.help.AbstractHelpFormatter; +import org.apache.commons.cli.help.OptionFormatter; + /** * A formatter of help messages for command line options. * <p> @@ -198,10 +201,10 @@ public class HelpFormatter { public static final String DEFAULT_SYNTAX_PREFIX = "usage: "; /** Default prefix for shortOpts */ - public static final String DEFAULT_OPT_PREFIX = "-"; + public static final String DEFAULT_OPT_PREFIX = OptionFormatter.DEFAULT_OPT_PREFIX; /** Default prefix for long Option */ - public static final String DEFAULT_LONG_OPT_PREFIX = "--"; + public static final String DEFAULT_LONG_OPT_PREFIX = OptionFormatter.DEFAULT_LONG_OPT_PREFIX; /** * Default separator displayed between a long Option and its value @@ -358,9 +361,9 @@ public class HelpFormatter { buff.append("["); } if (option.getOpt() != null) { - buff.append("-").append(option.getOpt()); + buff.append(OptionFormatter.DEFAULT_OPT_PREFIX).append(option.getOpt()); } else { - buff.append("--").append(option.getLongOpt()); + buff.append(OptionFormatter.DEFAULT_LONG_OPT_PREFIX).append(option.getLongOpt()); } // if the Option has a value and a non blank argname if (option.hasArg() && (option.getArgName() == null || !option.getArgName().isEmpty())) { @@ -394,7 +397,7 @@ public class HelpFormatter { // whether the option is required or not is handled at group level appendOption(buff, it.next(), true); if (it.hasNext()) { - buff.append(" | "); + buff.append(AbstractHelpFormatter.DEFAULT_OPTION_GROUP_SEPARATOR); } } if (!optionGroup.isRequired()) { @@ -467,7 +470,7 @@ public class HelpFormatter { if (optBuf.length() < max) { optBuf.append(createPadding(max - maxSince - optBuf.length())); if (showSince) { - optBuf.append(lpad).append(option.getSince() == null ? "-" : option.getSince()); + optBuf.append(lpad).append(option.getSince() == null ? OptionFormatter.DEFAULT_OPT_PREFIX : option.getSince()); } optBuf.append(createPadding(max - optBuf.length())); } diff --git a/src/main/java/org/apache/commons/cli/OptionGroup.java b/src/main/java/org/apache/commons/cli/OptionGroup.java index 19e6825f..895cba7f 100644 --- a/src/main/java/org/apache/commons/cli/OptionGroup.java +++ b/src/main/java/org/apache/commons/cli/OptionGroup.java @@ -23,6 +23,8 @@ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; +import org.apache.commons.cli.help.OptionFormatter; + /** * A group of mutually exclusive options. */ @@ -154,10 +156,10 @@ public class OptionGroup implements Serializable { while (iter.hasNext()) { final Option option = iter.next(); if (option.getOpt() != null) { - buff.append("-"); + buff.append(OptionFormatter.DEFAULT_OPT_PREFIX); buff.append(option.getOpt()); } else { - buff.append("--"); + buff.append(OptionFormatter.DEFAULT_LONG_OPT_PREFIX); buff.append(option.getLongOpt()); } diff --git a/src/main/java/org/apache/commons/cli/Parser.java b/src/main/java/org/apache/commons/cli/Parser.java index a1dbc1d8..96cd34ea 100644 --- a/src/main/java/org/apache/commons/cli/Parser.java +++ b/src/main/java/org/apache/commons/cli/Parser.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.ListIterator; import java.util.Properties; +import org.apache.commons.cli.help.OptionFormatter; + /** * Creates {@link CommandLine} instances. * @@ -157,23 +159,23 @@ public abstract class Parser implements CommandLineParser { setOptions(options); cmd = CommandLine.builder().get(); boolean eatTheRest = false; - final List<String> tokenList = Arrays.asList(flatten(getOptions(), arguments == null ? new String[0] : arguments, stopAtNonOption)); + final List<String> tokenList = Arrays.asList(flatten(getOptions(), arguments == null ? Util.EMPTY_STRING_ARRAY : arguments, stopAtNonOption)); final ListIterator<String> iterator = tokenList.listIterator(); // process each flattened token while (iterator.hasNext()) { final String token = iterator.next(); if (token != null) { // the value is the double-dash - if ("--".equals(token)) { + if (OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(token)) { eatTheRest = true; - } else if ("-".equals(token)) { + } else if (OptionFormatter.DEFAULT_OPT_PREFIX.equals(token)) { // the value is a single dash if (stopAtNonOption) { eatTheRest = true; } else { cmd.addArg(token); } - } else if (token.startsWith("-")) { + } else if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) { // the value is an option if (stopAtNonOption && !getOptions().hasOption(token)) { eatTheRest = true; @@ -190,13 +192,12 @@ public abstract class Parser implements CommandLineParser { } // eat the remaining tokens if (eatTheRest) { - while (iterator.hasNext()) { - final String str = iterator.next(); + iterator.forEachRemaining(str -> { // ensure only one double-dash is added - if (!"--".equals(str)) { + if (!OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(str)) { cmd.addArg(str); } - } + }); } } } @@ -218,7 +219,7 @@ public abstract class Parser implements CommandLineParser { while (iter.hasNext()) { final String str = iter.next(); // found an Option, not an argument - if (getOptions().hasOption(str) && str.startsWith("-")) { + if (getOptions().hasOption(str) && str.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) { iter.previous(); break; } diff --git a/src/main/java/org/apache/commons/cli/PosixParser.java b/src/main/java/org/apache/commons/cli/PosixParser.java index f6f236f9..f9adc354 100644 --- a/src/main/java/org/apache/commons/cli/PosixParser.java +++ b/src/main/java/org/apache/commons/cli/PosixParser.java @@ -22,6 +22,8 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; +import org.apache.commons.cli.help.OptionFormatter; + /** * The class PosixParser provides an implementation of the {@link Parser#flatten(Options,String[],boolean) flatten} * method. @@ -81,7 +83,7 @@ public class PosixParser extends Parser { } break; } - tokens.add("-" + ch); + tokens.add(OptionFormatter.DEFAULT_OPT_PREFIX + ch); currentOption = options.getOption(ch); if (currentOption.hasArg() && token.length() != i + 1) { tokens.add(token.substring(i + 1)); @@ -132,9 +134,9 @@ public class PosixParser extends Parser { final String token = iter.next(); if (token != null) { // single or double hyphen - if ("-".equals(token) || "--".equals(token)) { + if (OptionFormatter.DEFAULT_OPT_PREFIX.equals(token) || OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(token)) { tokens.add(token); - } else if (token.startsWith("--")) { + } else if (token.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) { // handle long option --foo or --foo=bar final int pos = DefaultParser.indexOfEqual(token); final String opt = pos == -1 ? token : token.substring(0, pos); // --foo @@ -145,12 +147,12 @@ public class PosixParser extends Parser { throw new AmbiguousOptionException(opt, matchingOpts); } else { currentOption = options.getOption(matchingOpts.get(0)); - tokens.add("--" + currentOption.getLongOpt()); + tokens.add(OptionFormatter.DEFAULT_LONG_OPT_PREFIX + currentOption.getLongOpt()); if (pos != -1) { tokens.add(token.substring(pos + 1)); } } - } else if (token.startsWith("-")) { + } else if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) { if (token.length() == 2 || options.hasOption(token)) { processOptionToken(token, stopAtNonOption); } else if (!options.getMatchingOptions(token).isEmpty()) { @@ -159,7 +161,7 @@ public class PosixParser extends Parser { throw new AmbiguousOptionException(token, matchingOpts); } final Option opt = options.getOption(matchingOpts.get(0)); - processOptionToken("-" + opt.getLongOpt(), stopAtNonOption); + processOptionToken(OptionFormatter.DEFAULT_OPT_PREFIX + opt.getLongOpt(), stopAtNonOption); } // requires bursting else { @@ -205,7 +207,7 @@ public class PosixParser extends Parser { private void processNonOptionToken(final String value, final boolean stopAtNonOption) { if (stopAtNonOption && (currentOption == null || !currentOption.hasArg())) { eatTheRest = true; - tokens.add("--"); + tokens.add(OptionFormatter.DEFAULT_LONG_OPT_PREFIX); } tokens.add(value); } diff --git a/src/main/java/org/apache/commons/cli/Util.java b/src/main/java/org/apache/commons/cli/Util.java index 85b3fab5..cca7369f 100644 --- a/src/main/java/org/apache/commons/cli/Util.java +++ b/src/main/java/org/apache/commons/cli/Util.java @@ -17,6 +17,8 @@ package org.apache.commons.cli; +import org.apache.commons.cli.help.OptionFormatter; + /** * Contains useful helper methods for classes within this package. */ @@ -74,10 +76,10 @@ final class Util { if (isEmpty(str)) { return str; } - if (str.startsWith("--")) { + if (str.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) { return str.substring(2); } - if (str.startsWith("-")) { + if (str.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) { return str.substring(1); } return str; diff --git a/src/main/java/org/apache/commons/cli/help/OptionFormatter.java b/src/main/java/org/apache/commons/cli/help/OptionFormatter.java index 69577654..54e292ff 100644 --- a/src/main/java/org/apache/commons/cli/help/OptionFormatter.java +++ b/src/main/java/org/apache/commons/cli/help/OptionFormatter.java @@ -434,7 +434,7 @@ public final class OptionFormatter { * @return The since valeu from the option or "--" if no since value was set. */ public String getSince() { - return Util.defaultValue(option.getSince(), "--"); + return Util.defaultValue(option.getSince(), DEFAULT_LONG_OPT_PREFIX); } /**
