Changes in shFlags 1.0.x
========================

Changes with 1.0.3
------------------

MAJOR CHANGE! ``FLAGS_ARGC`` is now obsolete, and is replaced by
``FLAGS_ARGV``. See below for more info.

Fixed issue# 7 where long flags defined with '=' (e.g. --abc=123) made it
impossible for the user to know how many non-flag command-line arguments were
available because the value returned by ``FLAGS_ARGC`` was wrong. The
``FLAGS_ARGC`` value is now obsolete, but will be maintained for backwards
compatibility. The new method of getting the non-flag arguments is by executing
``eval set -- "${FLAGS_ARGV}"`` after the **FLAGS** call. The arguments will
then be available using the standard shell $#, $@, $*, $1, etc. variables.

Due to above fix for issue# 7, there is now proper support for mixing flags
with non-flag arguments on the command-line. Previously, all non-flag arguments
had to be at the end of the command-line.

Renamed ``_flags_standardGetopt()`` and ``_flags_enhancedGetopt()`` functions to
``_flags_getoptStandard()`` and ``_flags_getoptEnhanced()``.

Took out the setting and restoration of the '-u' shell flag to treat unset
variables as an error. No point in having it in this library as it is verified
in the unit tests, and provides basically no benefit.

Fixed bug under Solaris where the generated help was adding extra 'x'
characters.

Added checks for reserved flag variables (e.g. FLAGS_TRUE).

Fixed some unset variable bugs.

Now report the actual getopt error if there is one.

All tests now properly enable skipping based on whether a standard or enhanced
getopt is found.

Added the OS version to OS release for Solaris.


Changes with 1.0.2
------------------

FLAGS_PARENT no longer transforms into a constant so that it can be defined at
run time in scripts.

Added warning about short flags being unsupported when there are problems
parsing the options with **getopt**.

Add default values to end of description strings.

Fixed bug that returned an error instead of success when recalling the default
values for empty strings.

Added warning when a duplicate flag definition is attempted.

Improved ``assert[Warn|Error]Msg()`` test helper grepping.

Replaced shell_versions.sh with a new versions library and created
**gen_test_results.sh** to make releases easier.

Copied the coding standards from shUnit2, but haven't fully implemented them
in shFlags yet.

Issue# 1: When a user defines their own --help flag, no more warning is thrown
when FLAGS() is called stating that the help flag already defined.

Issue# 2: Passing the --nohelp option no longer gives help output.

Issue# 3: Added support for screen width detection.


Changes with 1.0.1
------------------

Fixed bug where the help output added [no] to all flag names

Added additional example files that are referenced by the documentation.

Improved zsh version and option checking.

Upgraded shUnit2 to 2.1.4

Added unit testing for the help output.

When including a library (e.g. shflags) in a script, zsh 3.0.8 doesn't actually
execute the code in-line, but later. As such, variables that are defined in the
library cannot be used until functions are called from the main code. This
required the 'help' flag definition to be moved inside the FLAGS command.


Changes with 1.0.0
------------------

This is the first official release, so everything is new.


.. vim:fileencoding=latin1:ft=rst:spell:tw=80
.. $Id$
