2.10.1 (TBA)
-------------------


2.10.0 (2020-09-22)
-------------------

Buxfixes:

* `argbash-init` is able to handle empty string as the only argument without being puzzled (#130).
* Error handling of script working directory detection now more robust (#134).

New features:

* Argbash in the container has no longer the terminal output limitation caused by the crlf line ending (#129). Thanks to Felipe Santos (@felipecrs)!.
* The `ARG_USE_PROG` implementation was missing. Therefore, it was implemented as `ARG_USE_PROGRAM` using a slightly different interface.


2.9.0 (2020-08-01)
------------------

Buxfixes:

* Fixed typo in `argbash-init` and updated obsolete/incaccurate hints (#97).
* Fixed incorrect permission of non-script output files (#104).
* Increased MacOS compatibility by removing terminator from the `chmod` invocation (#107).

New features:

* Increased flexibility of the help option (#92).
* Improved `argbash-init` script template (#85).
* Increased flexibility of the version option (#123).
* Added a convenience function for module loading (#119).
* Added a possibility to the `argbash` tool to generate the script in-place, exposed as the `-i` option.


2.8.1 (2019-06-30)
------------------

Incompatible changes (minor):

* The `DEFINE_SCRIPT_DIR` macro doesn't resolve symlinks as it started to do so in `2.8.0`, use `DEFINE_SCRIPT_DIR_GNU` if you need the functionality.

New features (minor):

* The help message now contains reference for one-of argument types (#76).

Bugfixes:

* The environment variables help message has been fixed (#79).
* The manpage generation works when long description is supplied (#78).
* The `DEFINE_SCRIPT_DIR` macro doesn't use `readlink -e` any more (#74).
* Completion generation works when there are no options followed by value (#77).


2.8.0 (2019-01-26)
------------------

New features:

* Allow argbash and argbash-init to be run from symbolic links.
* Allow scripts generated by argbash-init with complete separation (`-s -s`) to be run from a symbolic link.
* Implemented output to generate manpages using the `rst2man` utility (fixes #37).
* Introduced the `ARG_VERSION_AUTO` macro.

Bugfixes:

* Double quotes in help messages are escaped (fixes #61).
* Fixed regression that allowed duplicate short options (fixes #58).


2.7.1 (2018-08-15)
------------------

New features:

* The bash completion now supports arguments of one-of-restricted values.

Bugfixes:

* Tests pass when there is no dash shell installed.
* The double-dash handling when `--` is the last argument has been improved.
* The generated bash completion is now complementing (i.e. not shadowing) the default bash completion.
* Docopt fatal regression has been fixed.
* Tests were added for docopt output.


2.7.0 (2018-07-19)
------------------

New features:

* `ARGBASH_WRAP` works recursively - you can wrap wrapped scripts.
* Introduced new output - the strict POSIX shell output.

Bugfixes:

* Fixed comment of the evaluate_strictness function in commented mode.
* `ARG_OPTIONAL_BOOL` won't let you specify other default values than `on` or `off`.
* Fixed bash completion containing a leading newline.
* Fixed Argbash bash completion generated filename.


2.6.1 (2018-03-04)
------------------

Bugfixes:

* Fixed the installation issue related to bash completion.
* Allowed docopt and completion output even in case of stdin input and stdout output.


2.6.0 (2018-02-27)
------------------

New features:

* Initial support for bash completion.
* Introduction of the `--strip` argument to `argbash` (deprecates the `--library option`).
* Initial support for `docopt` output.

Bugfixes:

* Fixed wrapping of scripts with repeated optional arguments.
* All scripts + tests are checked by Shellcheck.
* The `ARGBASH_WRAP` macro now supports looking for templates in subdirectories.
* Documentation expansion.


2.5.1 (2017-12-06)
------------------

Bugfixes:

* Fixed argbash-init corner cases (wrong output filename).
* Corrected argbash-init hint mode.
* Allowed argbash to wrap scripts in files with no extension.
* Fixed compatibility with the `-e` (i.e. "strict") mode (fixed #30).


2.5.0 (2017-09-03)
------------------

New features:

* The generated shell `case` statement is considerably nicer.
* Support for having more Argbash versions simultainously (applies to Argbash version that implement the `make alt(un)install` targets)
* Argbash functionality is now encapsulated in shell functions.
* API macros have checks against wrong number of arguments supplied.
* Short options can be also numeric.
* Introduced DIY mode as a preview feature.
* A Docker image of argbash is [available on Docker hub](https://hub.docker.com/r/matejak/argbash/). Thanks to [Peter Cummuskey](https://github.com/Tzrlk)))!

Bugfixes:

* Improved feedback when users provide invalid input (fixed #8, #9).
* The underlying code has been cleaned and distributed into multiple files.
* Fixed `m4_list_indices` to be consistent with `m4_list_nth`.
* Much-improved handling of typed arguments (fixed #25, #26).
* Improved documentation. Thanks to [Bianca Tamayo](https://github.com/btamayo)!


2.4.0 (2017-04-08)
------------------

New features:

* Implemented getopt-like behavior (so e.g. `-gIinclude` equals to `-g -I include` etc.).
* Improved feedback in case of mismatch between expected / received arguments.

Bugfixes:

* Argbash-powered scripts with positional arguments can be sourced consecutively without having to manually perform variable reset.
* Fixed issue #7 with newlines in help strings.
* The `argbash.spec` file has been corrected, so there is a hope that Argbash will make it to Fedora Linux distribution.


2.3.0 (2017-02-07)
------------------

New features:

* Behavior that raises an error when a script argument's value looks like option - enabled by the `ARG_RESTRICT_VALUES`.

New minor features:

* `argbash` provides more useful feedback in case of unmatched square brackets in the input
* `argbash` in standalone mode now uses the more fresh of the parsing code `.sh` or `.m4` templates (was undocumented, but the `.sh` one was always preferred over the `.m4`).


2.2.3 (2016-12-18)
------------------

New minor features:

* `argbash` tries to warn you when it looks like you have made a typo when attempting to use macros.
* `argbash` supports commented mode, when the parsing code is explained in detail

Bugfixes:

* Fixed handling of help messages in case of missing `ARG_HELP` macro


2.2.2 (2016-11-21)
------------------

New minor features:

* Added the `--mode` option to `argbash-init`.
* Improved help messages for arguments with typed values (experimental).

Bugfixes:

* Fixed quoting-related issues of the underlying code.


2.2.0 (2016-11-07)
------------------

New features:

* Introduced the `argbash-init` simple template generator.
* `argbash` can read from stdin.
* `ARG_HELP` gains second argument.
* Preview support for argument values types.

Bugfixes:

* Improved defaults indications in help messages.
* Overall internal code beautification.


2.1.1 (2016-08-26)
------------------

Bugfixes:

* Fixed help messages for the repeated optional args and added connected it to the delim choice.
* Fixed the installation process in `resources/Makefile`


2.1.0 (2016-08-26)
------------------

Incompatible changes (minor):

* `argbash` option `--standalone` has been renamed to `--library`.

New features:

* Support for configuration of argument-value delimiters (space and equal sign are supported - `--some-opt=value` as well as `--some-opt value` may work)

Bugfixes:

* Fixed handling of `argbash-xtoy` in Makefiles for tests/packaging.
* Added the `die` function to all generated scripts.
* Beautification of the underlying code.
* Documentation improvements in the Examples section.


2.0.0 (2016-08-03)
------------------

This release descends from `1.4.2`.

Incompatible changes:

* The variable name in which argument values are stored is different (lowercase) as the `bash` style guides recommend.

Bugfixes:

* Fixed a error handling bug in the `argbash-1to2` script.


1.4.2 (2016-08-02)
------------------

Bugfixes:

* Fixed the broken `argbash-1to2` script.


1.4.1 (2016-08-02)
------------------

Bugfixes:

* Fixed broken `Makefile` that prevented (un)installs.


1.4.0 (2016-08-02)
------------------

New features:

* Added the `ARGBASH_SET_INDENT` macro for indentation control.
* Created scripts are more compliant to the https://www.shellcheck.net/ tool.
* Introduced `argbash-1to2` script for migration to Argbash2

Bugfixes:

* Fixed some errors related to displaying help.
* Fixed spurious default to `ARG_POSITIONAL_INF`.
* Fixed handling of empty defaults.


1.3.0 (2016-07-23)
------------------

New features:

* Support for infinitely many (and leftover) arguments.
* Partial POSIX shell compatibility.

Bugfixes:

* Fixed definitions in the parsing part of the script.
* Expanded documentation --- expanded info about related projects.


1.2.1 (2016-07-10)
------------------

Bugfixes:

* Improved the wrapping of scripts to work with positional args


1.2.0 (2016-07-08)
------------------

New features:

* Support for repeated arguments, added specialized macro for --verbose
* Support for double dash (separating positional and optional arguments)
* Support for multi-valued arguments (with defaults)
* Improved generated code so users get more descriptive messages when something goes wrong
* The bash code tries to be minimal - only features that are used are supported
* Support for wrapping of other Argbash scripts
* Support for repeated arguments (s.a. argument `-I` of `gcc`)

Bugfixes:

* Fixed installation bug when ROOT variable was not treated properly
* Improved error reports when number of positional args doesn't match
* Improved m4s list implementation
* Added `m4_list_contains`


1.1.0 (2015-09-06)
------------------

New features:

* Support for positional args with default values.
* "Intelligent" shell auto-quoting of macro arguments.
* Improvement of standalone parsing code mode.
