diff --git a/src/main/java/org/apache/commons/cli/HelpFormatter.java b/src/main/java/org/apache/commons/cli/HelpFormatter.java index 539e18ceb..aa2ced300 100644 --- a/src/main/java/org/apache/commons/cli/HelpFormatter.java +++ b/src/main/java/org/apache/commons/cli/HelpFormatter.java @@ -30,6 +30,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more import java.util.Iterator; import java.util.List; import java.util.Objects; +import java.util.function.BiFunction; import java.util.function.Supplier; /** @@ -75,9 +76,14 @@ public static final class Builder implements Supplier { // Make HelpFormatter immutable for 2.0 /** - * Whether to show deprecated options. + * A function to convert a description (not null) and a deprecated Option (not null) to help description */ - private boolean showDeprecated; + private static final BiFunction DEFAULT_DEPRECATED_FORMAT = (d, o) -> "[Deprecated] " + d; + + /** + * Formatter for deprecated options. + */ + private BiFunction deprecatedFormatFunc; /** * The output PrintWriter, defaults to wrapping {@link System#out}. @@ -86,7 +92,7 @@ public static final class Builder implements Supplier { @Override public HelpFormatter get() { - return new HelpFormatter(showDeprecated, printStream); + return new HelpFormatter(deprecatedFormatFunc, printStream); } /** @@ -103,14 +109,24 @@ public Builder setPrintWriter(final PrintWriter printWriter) { /** * Sets whether to show deprecated options. * - * @param showDeprecated Whether to show deprecated options. + * @param useDefaultFormat if {@code true} use the default format, otherwise clear the formatter. * @return this. */ - public Builder setShowDeprecated(final boolean showDeprecated) { - this.showDeprecated = showDeprecated; - return this; + public Builder setShowDeprecated(final boolean useDefaultFormat) { + return setShowDeprecated(useDefaultFormat ? DEFAULT_DEPRECATED_FORMAT : null); } + /** + * Sets whether to show deprecated options. + * + * @param showDeprecatedFunc Specify the format for the deprecated options. + * @return this. + * @since 1.8.0 + */ + public Builder setShowDeprecated(final BiFunction showDeprecatedFunc) { + this.deprecatedFormatFunc = showDeprecatedFunc; + return this; + } } /** @@ -250,9 +266,9 @@ private static PrintWriter createDefaultPrintWriter() { protected Comparator