            Apache Commons CLI
                Version 1.4
               Release Notes


INTRODUCTION:

This document contains the release notes for this version of the Commons CLI
package. Commons CLI provides a simple API for working with the command line
arguments and options.

Commons CLI 1.4 is a feature release and binary compatible with the
previous versions, except for the OptionValidator class that is no longer public
(change introduced in v1.2). Commons CLI 1.4 at least requires Java 5.0.

More information can be found on the project site at
https://commons.apache.org/cli.


NEW FEATURES
============

o CLI-269: Introduce CommandLine.Builder
o CLI-267: Add an addRequiredOption method to Options.
           Thanks to Ricardo Ribeiro.


BUG FIXES
=========

o CLI-265: Optional argument picking up next regular option as its argument.
           Thanks to Martin Sandiford.
o CLI-266: HelpFormatter.setOptionComparator(null) doesn't display the values
           in inserted order. Thanks to Ravi Teja.


                Release Notes for version 1.3.1

BUG FIXES
=========

o CLI-252: LongOpt falsely detected as ambiguous. Thanks to Simon Harrer.


                Release Notes for version 1.3

NOTES
=====

A new parser is available: DefaultParser. It combines the features of the
GnuParser and the PosixParser. It also provides additional features like
partial matching for the long options, and long options without
separator (i.e like the JVM memory settings: -Xmx512m). This new parser
deprecates the previous ones.

DEPRECATIONS
============

o org.apache.commons.cli.BasicParser
    replaced by org.apache.commons.cli.DefaultParser

o org.apache.commons.cli.GnuParser
    replaced by org.apache.commons.cli.DefaultParser

o org.apache.commons.cli.OptionBuilder
    replaced by org.apache.commons.cli.Option.builder()
                org.apache.commons.cli.Option.builder(String)
                org.apache.commons.cli.Option.Builder

o org.apache.commons.cli.Parser
    replaced by org.apache.commons.cli.DefaultParser

o org.apache.commons.cli.PosixParser
    replaced by org.apache.commons.cli.DefaultParser


NEW FEATURES
============

o CLI-161: PosixParser doesn't stop the parsing on "--" tokens following an
           option with an argument
o CLI-167: Support options like Java memory settings (-Xmx512M)
o CLI-181: Unified Parser
o CLI-224: Added new fluent API to create Option instances via builder class
           Option.Builder. This replaces the now deprecated OptionBuilder.
           Thanks to Duncan Jones, Brian Blount.
o CLI-160: PosixParser now supports partial long options (--ver instead of
           --version).
o CLI-169: HelpFormatter now supports setting the displayed separator of long
           options. Thanks to J. Lewis Muir.
o CLI-214: Added new method Options.addOption(String, String). Thanks to
           Alexandru Mocanu.


BUG FIXES
=========

o CLI-248: Dead links on doc page.
o CLI-234: Fixed code example in javadoc of
           "Option#Builder#valueSeparator(char)". Thanks to Greg Thomas.
o CLI-241: Clarified behavior of "OptionValidator#validateOption(String)"
           in case of null input. Thanks to Beluga Behr.
o CLI-202: Default options will now work correctly with required options that
           are missing.
o CLI-203: Default options will now work correctly together with option groups.
o CLI-205: HelpFormatter.setArgName(String) now correctly sets the argument
           name.
o CLI-204: Passing default values for not defined options to a parser will now
           trigger a ParseException instead of a NullPointerException.
o CLI-201: Default properties provided as input to the Parser.parse() methods
           are now correctly processed.
o CLI-215: CommandLine.getParsedOptionValue() now returns a String object if no
           option type has been explicitly set. Thanks to Manuel Müller.
o CLI-212: HelpFormatter now prints command-line options in the same order as
           they have been added. Thanks to Per Cederberg.
o CLI-186: Standard help text now shows mandatory arguments also for the first
           option. Thanks to Kristoff Kiefer.
o CLI-207: HelpFormatter does not strip anymore leading whitespace in the
           footer text. Thanks to Uri Moszkowicz.
o CLI-185: Strip quotes contained in argument values only if there is exactly
           one at the beginning and one at the end. Thanks to
           Einar M. R. Rosenvinge.
o CLI-184: Negative numerical arguments take precedence over numerical options.
o CLI-193: Fix possible StringIndexOutOfBoundsException in HelpFormatter.
           Thanks to Travis McLeskey.
o CLI-183: OptionGroups no longer throw an AlreadySelectedException when reused
           for several parsings.
o CLI-182: OptionGroup now selects properly an option with no short name.


CHANGES
=======

o CLI-240: Small cleanup of Option class. Thanks to Beluga Behr.
o CLI-230: Options.getRequiredOptions() now returns an unmodifiable list.
o CLI-218: Clarify javadoc for CommandLine.getOptionValue() that the first
           specified argument will be returned. Thanks to Sven.
o CLI-227: Changed unit tests to junit 4 annotation style. Thanks to
           Duncan Jones.
o CLI-209: The javadoc of OptionBuilder now states that the class is not
           thread-safe. Thanks to Thomas Herre.
o CLI-200: Fixed typo in javadoc of class CommandLine. Thanks to
           Gerard Weatherby.
o CLI-223: Source code now uses generic types instead of raw types where
           possible. Thanks to Gerard Weatherby.
o CLI-220  Corrected javadoc for return type of
           MissingOptionException.getMissingOptions(). Thanks to Joe Casadonte.
o CLI-197: Improve description of parameter "stopAtNonOption" in method
           CommandLine.parse(Options, String[], boolean). Thanks to
           Anders Larsson.
o CLI-231: Removed DoubleCheckedLocking test from checkstyle configuration.
           Thanks to Duncan Jones.


                Release Notes for version 1.2

NEW FEATURES
============

o --     : The method getOptionProperties() in the CommandLine class was added
           to retrieve easily the key/value pairs specified with options like
           -Dkey1=value1 -Dkey2=value2.
o CLI-157: GnuParser now supports long options with an '=' sign
           (ie. --foo=bar and -foo=bar)
o CLI-155: The ordering of options can be defined in help messages.


BUG FIXES
=========

o CLI-137: The number of arguments defined for an option specifies the
           arguments per occurence of the option and not for all occurences.
o CLI-164: PosixParser no longer ignores unrecognized short options.
o CLI-163: PosixParser no longer stops the bursting process of a token if
           stopAtNonOption is enabled and a non option character is
           encountered.
o CLI-165: PosixParser no longer keeps processing the tokens after an
           unrecognized long option when stopAtNonOption is enabled.
o CLI-156: Required options are properly checked if an Options instance is used
           twice to parse a command line.
o CLI-151: The line wrapping in HelpFormatter now works properly.


CHANGES
=======

o CLI-149: The message of MissingOptionException has been improved.
o CLI-86:  The exceptions have been enhanced with methods to retrieve easily
           the related options.
o CLI-141: Option.toString() now reports arguments properly.
o CLI-142: The Parser class has been changed to be more easily extendable.
o CLI-140: The following classes are now serializable: Option, OptionGroup,
           CommandLine and Options.
o --     : OptionValidator is no longer public, its methods were all private.


                Release Notes for version 1.1

NEW FEATURES
============

o CLI-78:  Setting description of a Option.

CHANGES
=======

o CLI-2:   Wrong usage summary.
o CLI-5:   Dependecy on commons-lang-2.0 but commons-lang-1.0 is obtained.
o CLI-8:   Line separator as first char for helpformatter (footer) throws
           exception.
o CLI-13:  CommandLine.getOptionValue() behaves contrary to docs.
o CLI-21:  clone method in Option should use super.clone().
o CLI-23:  Passing properties in Parser does not work for options with a single
           argument.
o CLI-26:  Only long options without short option seems to be noticed.
o CLI-28:  Infinite Loop in Command-Line processing.
o CLI-29:  Options should not be able to be added more than once.
o CLI-35:  HelpFormatter doesn't sort options properly.
o CLI-38:  HelpFormatter doesn't function correctly for options with only
           LongOpt.
o CLI-44:  Document enhancement.
o CLI-45:  Documentation errors.
o CLI-51:  Parameter value "-something" misinterpreted as a parameter.
o CLI-56:  clone() method doesn't fully clone contents.
o CLI-59:  No Javadoc for HelpFormatter!.
o CLI-65:  Parser breaks up command line parms into single characters.
o CLI-67:  Missing arguments in HelpFormatter.renderOptions(..).
o CLI-69:  Error parsing option arguments.
o CLI-71:  A weakness of parser.
o CLI-129: CLI_1_BRANCH build.xml doesn't work.
o CLI-130: Remove the Commons Lang dependency.
o CLI-131: Options class returns options in random order.
o CLI-132: MissingOptionException should contain a useful error message.
o CLI-133: NullPointerException in Util.stripLeadingHyphens when passed a null
           argument.
o CLI-134: 1.1 is not backwards compatible because it adds methods to the
           CommandLineParser interface.
o CLI-135: Backwards compatibility between 1.1 and 1.0 broken due to
           Option.addValue removal.


Historical list of changes: https://commons.apache.org/cli/changes-report.html

For complete information on Commons CLI, including instructions on how to
submit bug reports, patches, or suggestions for improvement, see the
Apache Commons CLI website:

https://commons.apache.org/cli/

Have fun!
-Apache Commons CLI team
