Revision history for Perinci-CmdLine

0.91     2013-10-02 (SHARYANTO)

         - This release focuses on making help message prettier: colors,
           sorting, some tweaks/fixes. Details below. Formatting is now done
           using Text::ANSITable. Producing help now causes a slight noticeable
           delay (like 0.3-0.4s) on my PC/laptop, but since it is not annoying
           enough or invoked frequently enough on a daily basis, it'll do for
           now.

         [ENHANCEMENTS]

         - Generate colored help message, yay.

         - Provide two versions of help: compact and verbose (--help --verbose).
           The purpose of compact help is to be short and rarely exceed one
           screen: it only displays usage, examples, and list of options (no
           documentation on each option). The normal help is now the verbose
           help.

         - Show examples in help message.

         - Show function description in verbose help message.

         - Don't show 'name - summary' line in help message if summary is not
           specified.

         - To save a bit of screen space, don't list --help and --version in
           compact help message, since they are already obvious from the usage
           section.

         - Observe 'x.perinci.cmdline.negative_summary' Rinci metadata
           attribute. If there is a bool option with default=1 (e.g. --public,
           with summary 'Only show public items') the help message now displays
           '--nopublic' since --public is implicit. The summary should
           accordingly be the negative summary (e.g. 'Only show private items').
           This can now be put in said attribute. It can also be localized (e.g.
           'x.perinci.cmdline.negative_summary.alt.lang.id_ID').

         - Add examples/demo-help which contains various options to show how
           --help and '--help --verbose' would display it.

         - For "simple" actions like 'help', 'list', 'version', logging is
           turned off by default to reduce startup overhead. However, you can
           still turn on logging via LOG=1.


0.90     2013-09-23 (SHARYANTO)

         - Add 'args' subcommand specification to prefill function arguments
           when calling (useful for function that serves multiple subcommands).

         - Show positional arguments in usage message.


0.89     2013-09-20 (SHARYANTO)

         - No functional changes. Force upgrade of deps to show previous error
           (Rinci 1.1.38).


0.88     2013-09-11 (SHARYANTO)

         - No functional changes. Demote Perinci::Tx::Manager from
           RuntimeRequires to RuntimeRecommends because not all applications use
           it and it currently does not install on Windows (some deps like
           File::Lock, which deps on Data::Structure::Util, does not build).


0.87     2013-09-08 (SHARYANTO)

         [REMOVED FEATURES]

         - Remove 'dash_to_underscore' option because it is currently rather
           confusing. If you specify subcommands using underscores, -l will list
           the underscored version but tab completion is using the dashed
           version. To simplify stuffs, now no transformation is done.

         [BUG FIXES]

         - Forgot to pass 'pa' argument to Perinci::BashComplete function.


0.86     2013-09-08 (SHARYANTO)

         - Update to Rinci 1.1.36 (entity_version -> entity_v).

         - Replace Perinci::Access::InProcess with ::Perl and ::Schemeless.


0.85     2013-08-15 (SHARYANTO)

         [BUG FIXES]

         - No functional changes. Add missing dependencies to Perinci::To::Text
           [CT].


0.84     2013-08-11 (SHARYANTO)

         [BUG FIXES]

         - Forgot to update method name which caused '--help' and the
           peri-func-usage to not work properly.


0.83     2013-07-26 (SHARYANTO)

         - No functional changes. Adjust to new SHARYANTO::Role::Doc::Section
           0.53.


0.82     2013-07-26 (SHARYANTO)

         [ENHANCEMENTS]

         - Allow disabling paging, when cmdline.page_result result metadata is
           active, using PAGER=0.

         - Column width now observes the COLUMNS environment.

         - Add command line script: peri-func-usage to display usage text for
           any Riap function.


0.81     2013-07-26 (SHARYANTO)

         - Change options display in usage text to be more compact (remove blank
           line after --foo line, but indent the options summary/description
           text more deeply).

         - Add FAQ item about modifying the common options.

         - Mark dev version as 'dev' in --help.


0.80     2013-07-06 (SHARYANTO)

         - Add 'use experimental "smartmatch"' for 5.18+.

         - Handle error when COLOR=0.


0.79     2013-05-18 (SHARYANTO)

         - Use Progress::Any::Output::TermProgressBarColor to replace
           Progress::Any::Output::TermProgress.


0.78     2013-05-10 (SHARYANTO)

         - Text in common_opt (category, usage, summary) is now not required to
           be translateable.

         - Update 'id' translation.


0.77     2013-05-10 (SHARYANTO)

         [BUG FIXES]

         - Setting --format-options didn't work.


0.76     2013-05-10 (SHARYANTO)

         [ENHANCEMENTS]

         - Common options are now modularized instead of hardcoded. You can now
           delete/rename/add common options like --help, --version, etc. See
           documentation for the 'common_opts' attribute.

         [REMOVED FEATURES]

         - Remove 'extra_opts' attribute because they are now supported via
           'common_opts'.


0.75     2013-05-04 (SHARYANTO)

         - Observe PROGRESS environment (can be set to 0 to disable progress
           display).

         - binmode(STDOUT, ":utf8") (TODO: option to opt out from this).


0.74     2013-04-16 (SHARYANTO)

         - No functional changes. Avoid perl undef warning.


0.73     2013-04-15 (SHARYANTO)

         - Provide format_row().


0.72     2013-04-14 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - format_and_display_result() is split to format_result() and
           display_result() (should not be a problem because it's not yet
           documented).

         [ENHANCEMENTS]

         - Support streaming output (function needs to set result metadata
           is_stream => 1 and result needs to be glob/IO::Handle/array/tied
           array, format needs to be text).

         - Observe 'x.perinci.cmdline.default_format' metadata attribute.


0.71     2013-04-05 (SHARYANTO)

         - No functional changes. Workaround problem which causes non-pretty
           text tables to be displayed by default.


0.70     2013-04-05 (SHARYANTO)

         - Add no_getopt_compat Getopt::Long::Configure to disregard "+" as
           option starter.


0.69     2013-03-15 (SHARYANTO)

         - Add 'pa_args' attribute to pass to Perinci::Access (and in turn to
           Perinci::Access::HTTP::Client), e.g. HTTP basic auth information.

         - Several small tweaks.


0.68     2013-01-09 (SHARYANTO)

         - Add workaround for formatter that modifies STDOUT's binmode setting.


0.67     2012-10-29 (SHARYANTO)

         - No functional changes. Fix dependencies.


0.66     2012-10-24 (SHARYANTO)

         - Display progress indicator for function which uses it (see
           Perinci::Access::InProcess 0.36+). For an example of this, see
           Git::Bunch 0.24, function sync_bunch().

         - Show Perinci::CmdLine's version in --version.


0.65     2012-09-06 (SHARYANTO)

         - Remove example script bin/symlink-u due to circular dependency
           [RT#79482].


0.64     2012-09-04 (SHARYANTO)

         - Automatically set verbose when --dry-run.


0.63     2012-08-29 (SHARYANTO)

         - Allow transactional function to be passed --dry-run.


0.62     2012-08-28 (SHARYANTO)

         - Allow setting exit code via result metadata key 'cmdline.exit_code'.


0.61     2012-08-08 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Change how array of scalars is parsed, now not as JSON/YAML but using
           repeated options (--foo 1 --foo 2) a la traditional Getopt::Long.

         - Turn on per-argument explicit JSON and YAML parsing, using
           --ARGNAME-json and --ARGNAME-yaml, to make it possible to enter undefs,
           empty arrays, etc.


0.60     2012-08-01 (SHARYANTO)

         - Rename demo script 'u-symlink' to 'symlink-u'.

         - Show cmdline_aliases in help message.


0.59     2012-07-27 (SHARYANTO)

         - Tweak: run_history(): Do not format date/time, let
           Data::Format::Pretty::Console do it for us

         - Fix: --verbose, --quiet, et al didn't work before.


0.58     2012-07-26 (SHARYANTO)

         - Allow setting undo => 0 in subcommand, to disable undo/transaction
           for that subcommand.


0.57     2012-07-26 (SHARYANTO)

         - Add 'extra_opts' attribute.


0.56     2012-07-25 (SHARYANTO)

         - No functional changes. Increase dep version
           Data::Format::Pretty::Console 0.16.


0.55     2012-07-23 (SHARYANTO)

         - Support 'cmdline_src' arg spec key (Rinci 1.1.20+).


0.54     2012-07-19 (SHARYANTO)

         - No functional changes. Add dependencies to
           Perinci::Access::TCP::{Server,Client} for convenience. Requires
           Perinci::Sub::GetArgs::Argv 0.18 which supports parsing nonscalar
           arguments as JSON as well as YAML, also for convenience.


0.53     2012-07-12 (SHARYANTO)

         [ENHANCEMENTS]

         - Add 'default_subcommand' attribute. If set, subcommand name will be
           taken from this instead of first command-line argument. To access
           other subcommands, users will need to give --cmd command-line option.

         - Common options --list will only be added if there are subcommands
           defined.

         [BUG FIXES]

         - A couple of fixes to tab completion and perl undef warnings.

         [OTHER]

         - Example script 'symlink-with-undo' renamed to 'u-symlink' (to make it
           consistent with the upcoming 'u-trash' script; see
           File::Trash::Undoable).


0.52     2012-06-26 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Remove options --yaml, --json, --text, --text-pretty, --text-simple;
           use --format for now. This is to reduce the possibility of collision
           with function argument options (especially things like --text are
           common as function arguments). In general Perinci::CmdLine should
           introduce as few command-line options as possible to avoid
           collisions.

         [FIXES]

         - Fix typo that cause list of known result formats to be empty in error
           message when passed --format=BOGUS


0.51     2012-06-22 (SHARYANTO)

         [ENHANCEMENTS]

         - Don't use transactions when dry run, so transaction list is not full
           with dry run calls.


0.50     2012-06-22 (SHARYANTO)

         [ENHANCEMENTS]

         - Interpret --dry-run (or environment DRY_RUN=1) and pass -dry_run=>1
           to functions that have the dry_run feature.

         - Don't treat 304 status as error (still return exit code 0).


0.49     2012-06-22 (SHARYANTO)

         [ENHANCEMENTS]

         - Implement undo (--undo, --redo, --history, --clear-history).


0.48     2012-06-15 (SHARYANTO)

         [ENHANCEMENTS]

         - Add module: Perinci::CmdLine::Easy


0.47     2012-04-03 (SHARYANTO)

         [FIXES]

         - Better handle case when common options like --help, --list, --version
           clash with function arguments with the same name. Now the behavior is
           to invoke common action (like help, version), unless
           --action=subcommand is specified, where it will set function
           arguments instead. Note that this is a non-issue when none of the
           function arguments happen to have names of 'help', 'list', 'version',
           etc.


0.46     2012-03-30 (SHARYANTO)

         - No functional changes. Fix typo.


0.45     2012-03-30 (SHARYANTO)

         [REFACTORING]

         - Split formatting to Perinci::Result::Format (in Perinci dist).

         [INCOMPATIBLE CHANGE]

         - Rename --pretty (-p) and --nopretty (-P) to --text-pretty and
           --text-simple.


0.44     2012-03-29 (SHARYANTO)

         [ENHANCEMENTS]

         - Make it easy to add more output formats: added --format and formats()
           attribute.

         [INCOMPATIBLE CHANGE]

         - --json now outputs compact JSON instead of pretty ones. To
           pretty-print the output one can pipe it to a formatter program.

         [FIXES]

         - Bash completion: list of common options was incomplete (but we still
           can't complete common option's value like --format <tab>).


0.43     2012-03-23 (SHARYANTO)

         [ENHANCEMENTS]

         - Show default argument value in --help message.


0.42     2012-03-16 (SHARYANTO)

         [ENHANCEMENTS]

         - Localized/translatable messages. English and Indonesian included.

         - Read environment variable PERINCI_CMDLINE_PROGRAM_NAME.

         - peri-run: Accept --subcommand (-s) to specify subcommands.

         - Allow choosing PAGER via result metadata key 'cmdline.pager'.


0.41     2012-03-08 (SHARYANTO)

         [BUG FIXES]

         - Fix do not empty envelope when 'cmdline.display_result' is false.


0.40     2012-03-08 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Observe function result metadata: 'cmdline.display_result' (no longer
           observe 'cmdline.result_importance').

         [ENHANCEMENTS]

         - Observe function result metadata: 'cmdline.page_result' to send
           result to PAGER.


0.39     2012-03-03 (SHARYANTO)

         [ENHANCEMENTS]

         - Add short options for --yaml (-y), --json (-j), --pretty (-p),
           and --nopretty (-P).

         - Observe function result metadata: 'cmdline.result_importance' (if set
           to 'low', won't display result).

         [FIXES]

         - Common options (like --yaml, --help, -l) now won't override options
           for function arguments of the same name.

         [REMOVED]

         - Remove support for PHP serialization output (will be re-added later
           via --format, which can use any Data::Format::Pretty::* module).


0.38     2012-02-23 (SHARYANTO)

         - Rename distribution from Sub-Spec-CmdLine to Perinci-CmdLine. Now
           Rinci/Riap-based (transparent remote access). Refactor into OO. Some
           features missing for now. Tests not updated yet.


0.37     2012-01-20 (SHARYANTO)

         - No functional changes. Mark deprecation.


0.36     2011-08-25 (SHARYANTO)

         - No functional changes. gen_usage() split to its own dist:
           Sub-Spec-To-Text. Update to Sub::Spec 0.15.


0.35     2011-08-11 (SHARYANTO)

         - Uses Data::Format::Pretty for result formatting. JSON output is now
           pretty-printed by default.


0.34     2011-08-03 (SHARYANTO)

         - No functional changes. Fixed test script to adjust to new
           Object::BlankStr [CT]. Updated dependencies.


0.33     2011-07-26 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Refactoring: move parse_argv() to
           Sub::Spec::GetArgs::Argv::get_args_from_argv().

         [ENHANCEMENTS]

         - Localize Getopt::Long::Configure() effect.


0.32     2011-07-10 (SHARYANTO)

         [BUG FIXES]

         - runpm: fix -I.


0.31     2011-07-10 (SHARYANTO)

         [ENHANCEMENTS]

         - bin/runpm: add --help (-h) and -I (--library) options.

         - run(): add dash_to_underscore option to allow subcommands using
           dashes instead of underscores.


0.30     2011-06-05 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - To reduce the trap of implicit YAML parsing, parsing is only done for
           nonscalar arguments.


0.29     2011-06-01 (SHARYANTO)

         - No functional changes.

         [ETC]

         - Update to latest version of Sub::Spec::Runner.


0.28     2011-04-14 (SHARYANTO)

         [BUG FIXES]

         - Remove extra name line in usage message.


0.27     2011-04-14 (SHARYANTO)

         [ENHANCEMENTS]

         - run(): For convenience, allow general options (e.g. --version,
           --help, --json, etc) to be specified after subcommand name, if it
           doesn't collide with spec arg

         [ETC]

         - Replace Clone::Any with Data::Clone (Clone::Any fallbacks to Storable
           which doesn't support storing Regexp, so tests will fail if Clone is
           not available).


0.26     2011-03-04 (SHARYANTO)

         - Require Sub::Spec::Runner 0.09.


0.25     2011-02-28 (SHARYANTO)

         - On non-success response from sub, print output (error message) even
           if spec enables cmdline_suppress_output.


0.24     2011-02-28 (SHARYANTO)

         - Now based on Sub::Spec::Runner for dependency checking before run.


0.23     2011-02-23 (SHARYANTO)

         - Fix dependency (Sub::Spec version).

         - Don't add error message when Getopt::Long already prints to stderr.


0.22     2011-02-22 (SHARYANTO)

         - Use Sub::Spec::Utils.


0.21     2011-02-21 (SHARYANTO)

         - Add some more documentation.

         - Requires recent versions of Test::More & Sub::Spec::BashComplete.


0.20     2011-02-18 (SHARYANTO)

         - Escape completion output since BashComplete now doesn't.

         - Added some doc.


0.19     2011-02-18 (SHARYANTO)

         - Provide runpm script.


0.18     2011-02-18 (SHARYANTO)

         - run(): More fixes for completion.

         - spec: cmdline_aliases is renamed to arg_aliases.

         - Fix test [CT].


0.17     2011-02-17 (SHARYANTO)

         - run(): Fixed stupid parenthesis bug.


0.16     2011-02-17 (SHARYANTO)

         - run(): A couple more fixes for bash completion.

         - parse_argv(): Also add --nofoo for bool cmdline_aliases.


0.15     2011-02-17 (SHARYANTO)

         - Yet more fixes for bash completion.

         - Fixed: parse_argv(): do not convert all remaining $argv to YAML so
           they can be reused (e.g. parse_argv'd) again

         - run(): add option 'custom_completer' to pass to
           Sub::Spec::BashComplete.


0.14     2011-02-17 (SHARYANTO)

         - Fixes for bash completion.


0.13     2011-02-17 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - run(): rename 'require' argument to 'load'.

         [IMPROVEMENTS]

         - parse_argv(): Respect arg spec: 'cmdline_aliases' for specifying
           option aliases.

         - run(): Allow 'subcommands' argument to be coderef.

         - run(): Pass more info (arguments) to coderef 'help' argument.

         - run(): Add option 'allow_unknown_args' for non-strict argv parsing.

         - gen_usage(): Add option: 'options_name'.


0.12     2011-02-16 (SHARYANTO)

         - Fixes for bash completion.

         - Add arguments to run(): help, spec, run, per-subcommand category.

         - Other bug fixes.


0.11     2011-02-16 (SHARYANTO)

         - Add support for bash completion (requires Sub::Spec::BashComplete).


0.10     2011-02-16 (SHARYANTO)

         - Add strict=>0 option in parse_argv(), for use by
           Sub::Spec::BashComplete.

         - Some small refactoring.


0.09     2011-02-15 (SHARYANTO)

         - Add --version.


0.08     2011-02-15 (SHARYANTO)

         - Fixes for subcommands support.

         - Respect spec clause: cmdline_suppress_output.


0.07     2011-02-11 (SHARYANTO)

         - Formatting fix: missing newline in error message.


0.06     2011-02-11 (SHARYANTO)

         - Add 'cmd' option to gen_usage().

         - Formatting tweaks.


0.05     2011-02-11 (SHARYANTO)

         - Remove 'required_args'.


0.04     2011-02-10 (SHARYANTO)

         - Formatting fixes.


0.03     2011-02-10 (SHARYANTO)

         - Formatting tweaks.

         - Fix schema clause ('in', not 'choices').


0.02     2011-02-09 (SHARYANTO)

         - Incompatible change: rename arg_order to arg_pos.

         - Documentation.


0.01     2011-02-09 (SHARYANTO)

         - First release.