diff options
author | Noah Kantrowitz <noah@coderanger.net> | 2016-06-16 18:55:23 -0700 |
---|---|---|
committer | Noah Kantrowitz <noah@coderanger.net> | 2016-06-16 18:55:23 -0700 |
commit | b7043c598293bfd74fbbfa7a9ce9edc4c2724c03 (patch) | |
tree | d7497aca787d403fcba092904b51b275dac773a7 /lib | |
parent | 2e2670b7664acda8b5c48da7a7b71f5b775ff07d (diff) | |
download | mixlib-cli-b7043c598293bfd74fbbfa7a9ce9edc4c2724c03.tar.gz |
Support two-argument procs for reducer-style arguments. This allows CLI options which can be repeated.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mixlib/cli.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/mixlib/cli.rb b/lib/mixlib/cli.rb index 31e44be..3e72f77 100644 --- a/lib/mixlib/cli.rb +++ b/lib/mixlib/cli.rb @@ -281,7 +281,18 @@ module Mixlib parse_block = Proc.new() do |c| - config[opt_key] = (opt_val[:proc] && opt_val[:proc].call(c)) || c + config[opt_key] = if opt_val[:proc] + if opt_val[:proc].arity == 2 + # New hotness to allow for reducer-style procs. + opt_val[:proc].call(c, config[opt_key]) + else + # Older single-argument proc. + opt_val[:proc].call(c) + end + else + # No proc. + c + end puts opts if opt_val[:show_options] exit opt_val[:exit] if opt_val[:exit] end |