Revision history for Commandable

0.14    2024-09-07
        [CHANGES]
         * Support discovering global options as attributes on package scalar
           variables in the SubAttributes finder

0.13    2024-09-01
        [CHANGES]
         * Added `->add_global_options` method to support global options
         * Support `=u` (unsigned) and `=f` (float) option types as well as
           arbitrary regexp match validation

        [BUGFIXES]
         * Ensure that hyphens are converted to underscores when setting
           default values for options
         * Ensure that mode=bool options always have a defined value, even if
           false

0.12    2024-08-21
        [CHANGES]
         * Moved `->parse_invocation` out of Command into Finder
         * Optional additional help text generated by the package that
           implements a given command
         * Use `meta` instead of `no strict refs` hackery
         * Avoid Test::NoWarnings

0.11    2023-06-08
        [CHANGES]
         * Added `$finder->find_and_invoke_list` convenience
         * Print information about `[no-]` prefix for negatable options in
           `help` output
         * Optionally require that options all come before non-option
           arguments
         * Optionally allow bundling of single-letter boolean options
         * Convert hyphens in option names to underscores when inserting their
           value into the options hash
         * Support integer-type checking in options
         * Added various docs

        [BUGFIXES]
         * Ensure that `$cinv->putback_tokens` escapes quotes

0.10    2023-04-29
        [CHANGES]
         * Add more types of option - negatable, incrementable, multi-value
           (much thanks to ilmari)
         * Use trailing `=` to indicate option names with values; to match
           Getopt::Long
         * Swap all unit tests from `Test::More` to `Test2::V0`

0.09    2022-12-04
        [CHANGES]
         * Added Commandable::Finder::MethodAttributes for handling commands
           provided by an object instance by capturing the instance itself in
           the code refs

0.08    2022-07-13
        [CHANGES]
         * Allow "slurpy" arguments
         * Added ->configure method to Finder, adding configuration options
         * Optionally permit multiple command invocations in one line

        [BUGFIXES]
         * Ensure the ->code field of Command instances is set by all Finder
           subclasses

0.07    2022-04-25
        [CHANGES]
         * Initial version of Commandable::Output API, an interface for user
           programs to customise the way output is displayed
         * Ensure that the 'help' builtin command uses Commandable::Output for
           all its printing
         * Convert underscores to hyphens in command names for
           Commandable::Finder::SubAttributes
         * More documentation on how to use Commandable::Finder::Packages

0.06    2021-11-03
        [CHANGES]
         * Initial support for declaring named options to commands
         * Also parse out commandline options
         * Include options in `help` output

0.05    2021-10-10
        [CHANGES]
         * Added Commandable::Finder::SubAttributes
         * Document the Commandable::Command result structure
         * Initial support for declaring positional arguments to commands
         * Assist with parsing command arguments out of invocation instances
         * Provide automatic built-in `help` command
         * Added some convenient wrappers for commandline scripts:
            + Commandable::Finder::SubAttributes->new_for_main
            + Commandable::Finder->find_and_invoke_ARGV

0.04    2020-01-20 18:51:50
        [CHANGES]
         * Renamed $inv->remaining to ->peek_remaining
         * Added Commandable::Finder::Packages

0.03    2018-10-16 17:22:16
        [CHANGES]
         * Added ->new_from_tokens

0.02    2018-07-29 23:39:17
        [CHANGES]
         * Added ->putback_tokens

        [BUGFIXES]
         * Make sure that "multiple" "quotes" are parsed correctly

0.01    2018-06-07 13:10:15
        Initial version with just Commandable::Invocation