<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<document>
  <properties>
    <title>Apache Commons CLI Release Notes</title>
  </properties>
  <body>
    <release version="1.6" date="tbd" description="New features and bug fixes">
      <!-- FIX -->
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Fix SpotBugs Error: Medium: Method intentionally throws RuntimeException. [org.apache.commons.cli.Option] At Option.java:[lines 417-423] THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Fix SpotBugs Error: Medium: Method intentionally throws RuntimeException. [org.apache.commons.cli.Option] At Option.java:[lines 446-450] THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Fix SpotBugs Error: Medium: Method intentionally throws RuntimeException. [org.apache.commons.cli.Option] At Option.java:[lines 474-478] THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
      </action>
      <action type="update" dev="ggregory" due-to="Arturo Bernal">
        Use EMPTY_STRING_ARRAY constant. #102.
      </action>
      <!-- ADD -->
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Add github/codeql-action.
      </action>
      <!-- UPDATES -->
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Bump actions/cache from 2.1.7 to 3.0.6 #97.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump actions/setup-java from 2 to 3.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
        Bump spotbugs from 4.5.3 to 4.7.1 #96, #107, #113.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump spotbugs-maven-plugin from 4.5.3.0 to 4.7.1.1 #98, #108, #115, #117.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump commons-parent from 52 to 53 #100.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #103.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-javadoc-plugin from 3.3.2 to 3.4.0 #105.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-pmd-plugin from 3.16.0 to 3.17.0 #110.
      </action>
    </release>
    <release version="1.5.0" date="10-23-2021" description="New features and bug fixes (Java 7).">
      <!-- FIX -->
      <action type="fix" dev="ggregory" due-to="Gary Gregory">
        Fix NPE in DefaultParser.isLongOption(String).
      </action>
      <action type="fix" dev="britter" due-to="Krishna Mohan Rao Kandunoori" issue="CLI-279">
        @param or @return lines should end with a period in CommandLine.java
      </action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">
        Replace deprecated FindBugs with SpotBugs.
      </action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">
        Replace CLIRR with JApiCmp.
      </action>
      <action type="fix" dev="ggregory" due-to="Elliotte Rusty Harold">
        Option Javadocs grammar nits #55.
      </action>
      <action type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
        Minor Improvements #57, #61.
      </action>
      <action type="fix" dev="ggregory" due-to="stoty" issue="CLI-254">
        Input "test" gets parsed as test, quotes die #58.
      </action>
      <action type="fix" dev="ggregory" due-to="MrQubo, Gary Gregory" issue="CLI-287">
        Allow whitespace-only header and footer #26.
      </action>
      <!-- ADD -->
      <action type="add" dev="chtompki" due-to="Rubin Simons" issue="CLI-217">
        Accommodate toggling partial matching in DefaultParser.
      </action>
      <action type="add" dev="britter" due-to="Béla Schaum" issue="CLI-274">
        Option parser type EXISTING_FILE_VALUE not check file existing
      </action>
      <action type="add" dev="britter" due-to="Christoph Läubrich" issue="CLI-271">
        CommandLine.getXXX and CommandLine.hasXXX should accept an Option as a parameter
      </action>
      <action type="add" dev="ggregory" due-to="Jason Dillon" issue="CLI-276">
        Adjust access-modifier of checkRequiredOptions() to protected.
      </action>
      <action type="add" dev="ggregory" due-to="Alex Nordlund" issue="CLI-282">
        TypeHandler should throw ParseException for an unsupported class.
      </action>
      <action type="add" dev="ggregory" due-to="Waldemar Sojka, Gary Gregory">
        Added setter for Builder.option #33.
      </action>
      <action type="add" dev="ggregory" due-to="Waldemar Sojka, Gary Gregory">
        Add Option unit tests #76.
      </action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" issue="CLI-294">
        Update Java from version 5 to 7.
      </action>
      <action type="update" dev="ggregory" due-to="Mincong Huang">
        Docs: Replace OptionBuilder in usage page #30.
      </action>
      <action type="update" dev="ggregory" due-to="dengliming">
        Remove deprecated sudo setting. #36.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
        Bump junit:junit from 4.12 to 4.13.2, #53, #60.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump commons-parent from 48 to 52.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-pmd-plugin from 3.12.0 to 3.16.0, #44, #54, #67, #92.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump actions/checkout from 2.3.1 to 3 #46, #72, #78, #93.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Bump actions/setup-java from v1.4.2 to v2 #50.
       </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-antrun-plugin from 1.7 to 3.0.0 #43.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump maven-checkstyle-plugin from 2.15 to 3.1.2 #41.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump checkstyle to 9.3 #68, #86, #90.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump actions/cache from 2 to 2.1.7 #64, #65, #81.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump commons.animal-sniffer.version 1.19 -> 1.20.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump maven-bundle-plugin 5.1.1 -> 5.1.2.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump biz.aQute.bndlib.version 5.1.2 -> 6.0.0.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump spotbugs from 4.4.1 to 4.5.3 #70, #88.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump spotbugs-maven-plugin from 4.4.1 to 4.5.3.0 #71, #85, #87.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-javadoc-plugin from 3.3.1 to 3.3.2, #91.
      </action>
    </release>

    <release version="1.4" date="2017-03-09" description="New features and bug fixes">
      <action type="add" dev="rfscholte" issue="CLI-269">
        Introduce CommandLine.Builder
      </action>
      <action type="fix" dev="britter" issue="CLI-265" due-to="Martin Sandiford">
        Optional argument picking up next regular option as its argument
      </action>
      <action type="add" dev="britter" issue="CLI-267" due-to="Ricardo Ribeiro">
        Add an addRequiredOption method to Options
      </action>
      <action type="fix" dev="britter" issue="CLI-266" due-to="Ravi Teja">
        HelpFormatter.setOptionComparator(null) doesn't display the values in inserted order
      </action>
    </release>

    <release version="1.3.1" date="2015-06-17" description="Bug fix release for 1.3">
      <action type="fix" dev="britter" issue="CLI-252" due-to="Simon Harrer">
        LongOpt falsely detected as ambiguous
      </action>
    </release>

    <release version="1.3" date="2015-05-09" description="This is a feature and maintenance bug fix release.">
      <action type="fix" dev="djones" issue="CLI-248">
        Fixed broken Javadoc links on Introduction page.
      </action>
      <action type="fix" dev="tn" issue="CLI-234" due-to="Greg Thomas">
        Fixed code example in javadoc of "Option#Builder#valueSeparator(char)".
      </action>
      <action type="fix" dev="tn" issue="CLI-241" due-to="Beluga Behr">
        Clarified behavior of "OptionValidator#validateOption(String)" in case of null input.
      </action>
      <action type="update" dev="tn" issue="CLI-240" due-to="Beluga Behr">
        Small cleanup of Option class.
      </action>
      <action type="update" dev="tn" issue="CLI-231" due-to="Duncan Jones">
        Removed DoubleCheckedLocking test from checkstyle configuration.
      </action>
      <action type="update" dev="tn" issue="CLI-230">
        Options.getRequiredOptions() now returns an unmodifiable list.
      </action>
      <action type="add" dev="tn" issue="CLI-224" due-to="Duncan Jones, Brian Blount">
        Added new fluent API to create Option instances via builder class Option.Builder.
        This replaces the now deprecated OptionBuilder.
      </action>
      <action type="update" dev="tn" issue="CLI-218" due-to="Sven">
        Clarify javadoc for CommandLine.getOptionValue() that the first specified
        argument will be returned.
      </action>
      <action type="add" dev="tn" issue="CLI-214" due-to="Alexandru Mocanu">
        Added new method Options.addOption(String, String).
      </action>
      <action type="update" dev="tn" issue="CLI-227" due-to="Duncan Jones">
        Changed unit tests to junit 4 annotation style.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-202">
        Default options will now work correctly with required options that are missing.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-203">
        Default options will now work correctly together with option groups.
      </action>
      <action type="update" dev="ebourg" issue="CLI-209" due-to="Thomas Herre">
        The javadoc of OptionBuilder now states that the class is not thread-safe.
      </action>
      <action type="add" dev="ebourg" issue="CLI-169" due-to="J. Lewis Muir">
        HelpFormatter now supports setting the displayed separator of long options.
      </action>
      <action type="update" dev="ebourg" issue="CLI-197" due-to="Anders Larsson">
        Improve description of parameter "stopAtNonOption" in method
        CommandLine.parse(Options, String[], boolean).
      </action>
      <action type="fix" dev="ebourg" issue="CLI-204">
        Passing default values for not defined options to a parser will now trigger
        a ParseException instead of a NullPointerException.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-205">
        HelpFormatter.setArgName(String) now correctly sets the argument name.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-201">
        Default properties provided as input to the Parser.parse() methods are now
        correctly processed.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-215" due-to="Manuel Müller">
        CommandLine.getParsedOptionValue() now returns a String object if no
        option type has been explicitly set.
      </action>
      <action type="update" dev="ggregory" issue="CLI-200" due-to="Gerard Weatherby">
        Fixed typo in javadoc of class CommandLine.
      </action>
      <action type="update" dev="ebourg" issue="CLI-223" due-to="Gerard Weatherby">
        Source code now uses generic types instead of raw types where possible.
      </action>
      <action type="update" dev="ebourg" issue="CLI-220" due-to="Joe Casadonte">
        Corrected javadoc for return type of MissingOptionException.getMissingOptions().
      </action>
      <action type="fix" dev="ebourg" issue="CLI-212" due-to="Per Cederberg">
        HelpFormatter now prints command-line options in the same order as they
        have been added.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-186" due-to="Kristoff Kiefer">
        Standard help text now shows mandatory arguments also for the first option.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-207" due-to="Uri Moszkowicz">
        HelpFormatter does not strip anymore leading whitespace in the footer text.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-185" due-to="Einar M R Rosenvinge">
        Strip quotes contained in argument values only if there is exactly one at the
        beginning and one at the end.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-184">
        Negative numerical arguments take precedence over numerical options (only supported
        by the new DefaultParser).
      </action>
      <action type="fix" dev="ebourg" issue="CLI-193" due-to="Travis McLeskey">
        Fix possible StringIndexOutOfBoundsException in HelpFormatter.
      </action>
      <action type="add" dev="ebourg" issue="CLI-161,CLI-167,CLI-181">
        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.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-183">
        OptionGroups no longer throw an AlreadySelectedException when reused for several parsings.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-182">
        OptionGroup now selects properly an option with no short name.
      </action>
      <action type="add" dev="ebourg" issue="CLI-160">
        PosixParser now supports partial long options (--ver instead of --version).
      </action>
    </release>

    <release version="1.2" date="2009-03-19" description="This is a maintenance release containing bug fixes.">
      <action type="fix" dev="joehni" issue="CLI-177">
        OptionBuilder is now reseted if an IllegalArgumentException occurs in create().
      </action>
      <action type="remove" dev="bayard">
        Ant build system removed. 
      </action>
      <action type="fix" dev="ebourg" issue="CLI-154">
        Incomplete usage documentation about Java property option.
      </action>
      <action type="fix" dev="bayard" issue="CLI-170">
        TypeHandler prints messages to stderr.
      </action>
      <action type="fix" dev="bayard" issue="CLI-162">
        Infinite loop in the wrapping code of HelpFormatter.
      </action>
      <action type="fix" dev="sgoeschl">
        Fixing some minor javadoc issues.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-137">
        The number of arguments defined for an option specifies the arguments per occurrence of the option
        and not for all occurrences. This was a major regression in CLI 1.1 which prevented the use of repeated options.
      </action>
      <action type="add" dev="ebourg">
        Added a getOptionProperties() method in the CommandLine class to retrieve easily the key/value pairs
        specified with options like -Dkey1=value1 -Dkey2=value2.
      </action>
      <action type="update" dev="ebourg" issue="CLI-157">
        GnuParser now supports long options with an '=' sign (ie. --foo=bar and -foo=bar)
      </action>
      <action type="fix" dev="ebourg" issue="CLI-164">
        PosixParser no longer ignores unrecognized short options.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-163">
        PosixParser no longer stops the bursting process of a token if stopAtNonOption is enabled and a non option
        character is encountered.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-165">
        PosixParser no longer keeps processing the tokens after an unrecognized long option
        when stopAtNonOption is enabled.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-156">
        Required options are properly checked if an Options instance is used twice to parse a command line.
      </action>
      <action type="update" dev="bayard" issue="CLI-155">
        The ordering of options can be defined in help messages.
      </action>
      <action type="fix" dev="bayard" issue="CLI-151" due-to="Dan Armbrust">
        The line wrapping in HelpFormatter now works properly. This caused CLI-162, and thus there was a feature change 
        for the HelpFormatter in that it is strict on width now rather than what seemed to be lenience before. Text without 
        whitespace will be cut off to fit in the spacing, and an IllegalStateException will be thrown if it is impossible 
        to output the information due to spacing constraints. 
      </action>
      <action type="fix" dev="bayard" issue="CLI-149">
        The message of MissingOptionException has been improved.
      </action>
      <action type="update" dev="ebourg" issue="CLI-86">
        The exceptions have been enhanced with methods to retrieve easily the related options.
      </action>
      <action type="fix" dev="bayard" issue="CLI-141" due-to="Henning Schmiedehausen, Bjorn Townsend">
        Option.toString() now reports arguments properly.
      </action>
      <action type="update" dev="bayard" issue="CLI-142" due-to="Henning Schmiedehausen">
        The Parser class has been changed to be more easily extendable.
      </action>
      <action type="update" dev="bayard" issue="CLI-140">
        The following classes are now serializable: Option, OptionGroup, CommandLine and Options.
      </action>
      <action type="remove" dev="ebourg">
        OptionValidator is no longer public, its methods were all private.
      </action>
    </release>

    <release version="1.1" date="2007-07-08" description="This is a maintenance release containing bug fixes.">
      <action type="fix" issue="CLI-2">Wrong usage summary. </action>
      <action type="fix" issue="CLI-5">Dependecy on commons-lang-2.0 but commons-lang-1.0 is obtained. </action>
      <action type="fix" issue="CLI-8">Line separator as first char for helpformatter (footer) throws exception. </action>
      <action type="fix" issue="CLI-13">CommandLine.getOptionValue() behaves contrary to docs. </action>
      <action type="fix" issue="CLI-21">clone method in Option should use super.clone(). </action>
      <action type="fix" issue="CLI-23">Passing properties in Parser does not work for options with a single argument. </action>
      <action type="fix" issue="CLI-26">Only long options without short option seems to be noticed. </action>
      <action type="fix" issue="CLI-28">Infinite Loop in Command-Line processing. </action>
      <action type="fix" issue="CLI-29">Options should not be able to be added more than once. </action>
      <action type="fix" issue="CLI-35">HelpFormatter doesn't sort options properly. </action>
      <action type="fix" issue="CLI-38">HelpFormatter doesn't function correctly for options with only LongOpt. </action>
      <action type="fix" issue="CLI-44">Document enhancement. </action>
      <action type="fix" issue="CLI-45">Documentation errors. </action>
      <action type="fix" issue="CLI-51">Parameter value "-something" misinterpreted as a parameter. </action>
      <action type="fix" issue="CLI-56">clone() method doesn't fully clone contents. </action>
      <action type="fix" issue="CLI-59">No Javadoc for HelpFormatter!. </action>
      <action type="fix" issue="CLI-65">Parser breaks up command line parms into single characters. </action>
      <action type="fix" issue="CLI-67">Missing arguments in HelpFormatter.renderOptions(..). </action>
      <action type="fix" issue="CLI-69">Error parsing option arguments. </action>
      <action type="fix" issue="CLI-71">A weakness of parser. </action>
      <action type="add" issue="CLI-78">Setting description of a Option. </action>
      <action type="fix" issue="CLI-129">CLI_1_BRANCH build.xml doesn't work. </action>
      <action type="fix" issue="CLI-130">Remove the Commons Lang dependency. </action>
      <action type="fix" issue="CLI-131">Options class returns options in random order. </action>
      <action type="fix" issue="CLI-132">MissingOptionException should contain a useful error message. </action>
      <action type="fix" issue="CLI-133">NullPointerException in Util.stripLeadingHyphens when passed a null argument. </action>
      <action type="fix" issue="CLI-134">1.1 is not backwards compatible because it adds methods to the CommandLineParser interface. </action>
      <action type="fix" issue="CLI-135">Backwards compatibility between 1.1 and 1.0 broken due to Option.addValue removal. </action>
    </release>

    <release version="1.0" date="2002-11-06" description="Initial release"/>    

  </body>
</document>
