blob: 2bc0d7d9c6c444e2eb775e8046c7be42d479d082 [file] [log] [blame]
----------
Change Log
----------
Changes in version 5.0.3
* Resolved {{{https://github.com/pholser/jopt-simple/issues/96} gh-96}} so that
options that take an argument but don't change the argument type from
<<<String>>> still show a <<<String>>> type indicator in the default
option help.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/104} gh-104}} so
that <<<EnumConverter>>> performs case-insensitive matching against arguments
of options. Thanks to Martin Paljak for this.
Changes in version 5.0.2
* Made some package-private abstract classes become public classes
with package-private constructors. This makes it possible to call some methods
from Kotlin that were previously inaccessible. Thanks to Mirko Friedenhagen
for this.
Changes in version 5.0.1
* Resolved {{{https://github.com/pholser/jopt-simple/issues/92} gh-92}} so that
in the event that <<<printHelpOn()>>> is called more than once, the output
is not duplicated.
Changes in version 5.0
* Abandoning JDKs prior to 7. All source is Java 7-compatible, and bytecode is compiled to 1.7
version.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/51} gh-51}} by adding
<<<OptionSpecBuilder.availableIf()>>> and <<<OptionSpecBuilder.availableUnless()>>>. Thanks
to Christian Ohr for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/70} gh-70}} by adding
<<<EnumConverter>>> and <<<PathConverter>>>. Thanks to Christian Ohr for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/88} gh-88}} by adding
an <<<OptionParser>>> constructor to allow suppression of option abbreviations.
Thanks to Louis Bergelson for this.
Changes in version 4.10
* Resolved {{{https://github.com/pholser/jopt-simple/issues/85} gh-85}}
by correcting the description column width consumption of the built-in
help formatter.
Changes in version 4.9
* Resolved {{{https://github.com/pholser/jopt-simple/issues/79} gh-79}}
by correcting the behavior of <<<OptionException.multipleOptionString>>>
when handling options with synonyms.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/72} gh-72}}
by externalizing some of the literal strings in <<<BuiltinHelpFormatter>>>
into resource bundles.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/76} gh-76}}
by modifying the behavior of <<<OptionalArgumentOptionSpec>>> so that if
the argument following the option does not "look like" an option but can
be converted to the option argument's type, treat the argument as the argument
of the option.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/68} gh-68}}
by modifying <<<BuiltinHelpFormatter>>> to be more extensible and documenting
the behavior of the newly accessible methods.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/73} gh-73}}
by correcting the behavior of <<<OptionSet.specs()>>> to remove all instances
of the non-option argument spec.
Changes in version 4.8
* Resolved {{{https://github.com/pholser/jopt-simple/issues/65} gh-65}}
by modifying the build file to create a JAR with OSGi metadata.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/63} gh-63}}
by externalizing exception messages into resource bundles.
Currently, we ship only with messages for locale "en_US".
Translations for other locales are more than welcome.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/58} gh-58}} by
rewriting exception messaging to clarify synonymous options.
Synonyms are be separated by slashes (/); lists of distinct options will
be separated by commas (,) in square brackets ([]).
Changes in version 4.7
* Resolved {{{https://github.com/pholser/jopt-simple/issues/57} gh-57}} by admitting
the underscore as a legal option character.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/53} gh-53}} by correcting
<<<OptionSet.hasOptions()>>> to answer correctly for no switches.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/56} gh-56}} by correcting
the default help formatting not to use a <<<Set>>> for rows of output,
but <<<List>>>.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/59} gh-59}} by relaxing
the return type of <<<ValueConverter.valueType()>>>.
Changes in version 4.6
* Resolved {{{https://github.com/pholser/jopt-simple/issues/31} gh-31}} by offering
<<<OptionSpecBuilder.requiredUnless()>>>. Thanks to Christian Ohr for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/38} gh-38}} by offering
<<<OptionParser.recognizedOptions()>>>. Thanks to Antoine Neveux for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/35} gh-35}} by offering
<<<OptionSet.asMap()>>>. Thanks to Brian Oxley for this.
Changes in version 4.5
* Resolved {{{https://github.com/pholser/jopt-simple/issues/17} gh-17}} by offering
<<<OptionParser.nonOptions()>>> and <<<NonOptionArgumentSpec>>>.
* Resolved {{{https://github.com/pholser/jopt-simple/pull/27} gh-27}} by offering
<<<OptionParser.allowsUnrecognizedOptions()>>>. Thanks to Erik Broes for this.
Changes in version 4.4
* Resolved {{{https://github.com/pholser/jopt-simple/issues/16} gh-16}} by offering
<<<BuiltinHelpFormatter>>> that allows configuration of overall row width and
column separator width. Thanks to Ryan Breidenbach for contributing code to this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/12} gh-12}} by offering
<<<OptionSpecBuilder.requiredIf()>>>.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/22} gh-22}}. Thanks to
El Kodus for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/19} gh-19}}. Thanks to
El Kodus for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/14} gh-14}} by offering
<<<AbstractOptionSpec.forHelp()>>>.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/13} gh-13}} by offering
<<<ArgumentAcceptingOptionSpec.withValuesSeparatedBy(String)>>>.
* Added <<<InetAddressValueConverter>>>. Thanks to Raymund F\u00FCl\u00F6p for this.
Changes in version 4.3
* Resolved {{{https://github.com/pholser/jopt-simple/issues/9} gh-9}} by offering
<<<OptionSet.specs()>>>, which gives a list of the specs corresponding to the
options detected on a parse, in the order in which the options occurred on the
command line.
Changes in version 4.2
* Resolved {{{https://github.com/pholser/jopt-simple/issues/8} gh-8}} by offering
<<<ArgumentAcceptingOptionSpec.defaultsTo(V[])>>> in addition to
<<<ArgumentAcceptingOptionSpec.defaultsTo(V, V...)>>>.
* Removing some internal unused classes and methods.
Changes in version 4.1
* Resolved {{{https://github.com/pholser/jopt-simple/issues/7} gh-7}} by allowing short option
clusters to contain options which can accept arguments. When such an option is encountered,
the remaining characters in the cluster are treated as the argument to the option. Thanks to
Alan van Dam for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/6} gh-6}} with general improvements
to the project's site. Thanks to Michael Osipov for this.
Changes in version 4.0
* Resolved {{{https://github.com/pholser/jopt-simple/issues/4} gh-4}} by adding method
<<<OptionParser.formatHelpWith(HelpFormatter)>>> to allow programmers to influence what
help is printed with <<<OptionParser.printHelpOn()>>>. A <<<HelpFormatter>>> is handed a
map, keyed by option text, whose values are <<<OptionDescriptor>>>s that describe the
options the parser has been configured with.
* Added method <<<OptionSet.hasOptions()>>>. Thanks to Michael Osipov for this.
* Resolved {{{https://github.com/pholser/jopt-simple/pull/3} gh-3}} by using
<<<SimpleDateFormat.toPattern()>>> rather than <<<SimpleDateFormat.toLocalizedPattern()>>>
in <<<DateConverter>>>. Thanks to Michael Osipov for this.
* Resolved {{{https://github.com/pholser/jopt-simple/issues/5} gh-5}} by allowing primitive
<<<Class>>> objects whose wrapper types are considered "value types" for purposes of
<<<ArgumentAcceptingOptionSpec.ofType()>>> in place of the wrapper classes. Thanks to
Daniel Yokomizo for suggesting this.
Changes in version 3.3
* Resolved {{{https://github.com/pholser/jopt-simple/pull/1} gh-1}} by adding method
<<<required()>>> to class <<<ArgumentAcceptingOptionSpec>>>, to allow callers to indicate
that a given option must be present on the command line. Thanks to Emils Solmanis for
adding this.
Changes in version 3.2
* Added method <<<defaultsTo()>>> to class <<<ArgumentAcceptingOptionSpec>>>, to allow
callers to specify default values for arguments of options. These influence the return
values of <<<OptionSpec.value(s)()>>> and <<<OptionSet.value(s)Of()>>>. Default values
also show up in the help screen entries for their options. This serves to resolve
{{{https://sourceforge.net/tracker/?func=detail&aid=2484524&group_id=125731&atid=703508} feature
request 2484524}}.
* Fixed a problem whereby the empty string, a string consisting solely of whitespace, or a
string with embedded whitespace weren't being properly recognized as arguments of options
when they should have.
* Resolved {{{https://sourceforge.net/tracker/?func=detail&aid=2793762&group_id=125731&atid=703508} feature
request 2793762}}, having to do with improving the behavior of embedded newlines in option
descriptions in help screens.
Changes in version 3.1
* Added method <<<withValuesConvertedBy()>>> to class <<<ArgumentAcceptingOptionSpec>>>,
to allow callers to specify converters or validators that transform arguments of
options into instances of specific Java types. This is useful for types which do not
meet the requirements of <<<ofType()>>>.
* Added classes <<<DateConverter>>> and <<<RegexMatcher>>> as examples of useful
argument converters.
Changes in version 3.0.1
* Dependency on {{{http://ant.apache.org} Ant}} more appropriately test-scoped in the
{{{http://maven.apache.org} Maven}} POM. That way, if you use JOpt Simple with Maven,
you don't download Ant unnecessarily.
Changes in version 3.0
* Version 3.0 supports Java 5 and greater only. If you need to use JOpt Simple in a
pre-Java-5 environment, use the latest 2.x release.
* Where appropriate, existing API calls have been updated to use Java generics.
* Extracted and surfaced interface <<<OptionSpec>>>. <<<OptionSpec>>>s returned by
the fluent interface methods can be used to retrieve arguments of the options they
represent in a type-safe manner.
* Removed all previously deprecated methods.
* Added methods to <<<OptionSet>>> to allow detection of options and retrieval of
option arguments using instances of <<<OptionSpec>>>.
* Converted tests to JUnit 4.
* Switched to MIT License.
* Relaxing some <<<List>>> parameter types and return types of methods to
<<<Collection>>>.
* <<<OptionArgumentConversionException>>> no longer drops the original cause on the
floor; hence <<<OptionException>>> can now be created with a cause.
* {{{http://maven.apache.org} Maven}}-ized the project web site.
* Overhauled the examples page.
Changes in version 2.4.1
* Fixed {{{https://sourceforge.net/tracker/index.php?func=detail&aid=2018262&group_id=125731&atid=703505} bug 2018262}}.
Changes in version 2.4
* Added the <<<acceptsAll()>>> method to class <<<OptionParser>>>. Options passed to
a given invocation of this method are treated as synonymous, so that each gives the
same answer when given as the argument to the methods <<<has()>>>, <<<valuesOf()>>>,
etc. on <<<OptionSet>>>.
* Surfaced the class <<<KeyValuePair>>>. This class can be very handy as a value
type for arguments whose values take on the form <<<key=value>>>, such as the <<<-D>>>
arguments to JVMs.
* Fixed {{{https://sourceforge.net/tracker/index.php?func=detail&aid=1932577&group_id=125731&atid=703505} bug 1932577}}.
* Added method <<<withValuesSeparatedBy()>>> to class <<<ArgumentAcceptingOptionSpec>>>,
to allow callers to specify multiple values for an option as a single argument with
values separated by a given character.
* Method <<<ofType()>>> on class <<<ArgumentAcceptingOptionSpec>>> now returns self
rather than <<<void>>>.
* Deprecated another "get for get's sake": <<<OptionParser.setPosixlyCorrect()>>>
It is replaced with a less Java-beany-looking method.
* Cleaned up the help screens produced by <<<OptionParser.printHelpOn()>>> so they are
rendered as two 40-character columns, with long space-broken values split across lines
as needed.
* Fixed {{{https://sourceforge.net/tracker/index.php?func=detail&aid=1956418&group_id=125731&atid=703505} bug 1956418}}.
Changes in version 2.3.6
* No changes to code; just getting {{{http://maven.apache.org} Maven}} to do releases
with its plugins.
Changes in version 2.3.3
* Deprecated method <<<OptionSet.wasDetected()>>> in favor of <<<OptionSet.has()>>> --
the new name seems to read better.
* <<<OptionException>>>s now override <<<getMessage()>>> sensibly, so that if a caller
wants to handle the exception by catching it and displaying a message from the
exception, she can do so and get satisfactory results.
* {{{http://maven.apache.org} Maven}}-ized project's build.
* Minor internal changes.
Changes in version 2.3.2
* Minor internal changes.
Changes in version 2.3.1
* Fixed a bug with POSIX-ly correct parsers. It was previously thought that POSIX-ly
correct parsers should signal end of options when they detect an argument that does
not lexically look like an option and could not be an argument of a previous option,
required or optional. Such parsers now signal end of options when they detect an
argument that does not lexically look like an option, and is not an argument of a
previous option with a required argument. If you want such an argument to be treated
as the argument of a preceding option whose argument is optional, you can still get
this behavior by appending the argument to the option, either with abutting syntax
(<<<-d/tmp>>>) or key-value syntax (<<<-d=/tmp>>>).
Changes in version 2.3
* No feature changes in this release; but this release can now be used with JDK 1.3.
Previous releases could be used only with JDK 1.4 or newer.
Changes in version 2.2
* Removed all previously deprecated methods.
* Re-clarified the contract of the one-arg <<<String>>> constructor of
<<<OptionParser>>>: the constructor now raises <<<NullPointerException>>> if its
argument is <<<null>>>. This is the convention for Java library methods which receive
illegal <<<null>>> parameters.
Changes in version 2.1
* Introduced a facility for <<<OptionParser>>>s to print a help screen, which
describes the options they accept.
* Added the ability to provide descriptions of options and their arguments when
configuring an <<<OptionParser>>>. These descriptions are printed in the
aforementioned help screens.
* Clarified the contract of the one-arg <<<String>>> constructor of <<<OptionParser>>>:
the constructor raises <<<IllegalArgumentException>>> if its argument is <<<null>>>.
* Deprecated <<<OptionParser.noArg()>>>, <<<OptionParser.requiredArg()>>>, and
<<<OptionParser.optionalArg()>>>.
* Deprecated some "gets for gets' sake": <<<OptionException.getOption()>>>,
<<<OptionSet.getNonOptionArguments()>>>. They are replaced with less
Java-beany-looking methods.
Changes in version 2.0
* Introduced a "fluent interface" API for specifying options for an <<<OptionParser>>>
to recognize. The old methods for option specification still work--you need not
convert to the new methods.
* Added the ability to specify that option arguments should be converted to specific
types. You can do this either with the old option specification methods or with the
new fluent interface API.
* Deprecated <<<OptionParser.requiresArg()>>> in favor of
<<<OptionParser.requiredArg()>>> -- the new name seems to read better.
Version 1.0
* First major release.
* Includes concrete classes <<<OptionParser>>> and <<<OptionSet>>>.
* Supports POSIX <<<getopt()>>> and GNU <<<getopt_long()>>> command line syntax.
* No type conversion on option arguments, they are all treated as <<<String>>>s.
* Methods <<<noArg()>>>, <<<requiredArg()>>>, and <<<optionalArg()>>> tell an
<<<OptionParser>>> what options to recognize.