Cri News
2.15.12
Changes:
- 
Dropped support for Ruby 2.5 
2.15.11
Fixes:
- 
Added support for Ruby 3.0 (#111) 
Changes:
- 
Dropped support for Ruby 2.3 and 2.4 (#112) 
2.15.10
Fixes:
- 
Fixed warnings appearing in Ruby 2.7 (9a3d810) 
2.15.9
Fixes:
- 
Fixed bug which could cause options from one command appear in other commands (#101, #102) 
2.15.8
Fixes:
- 
Don’t explicitly set default values for options (#99) 
This release reverts a backwards-incompatible change introduced in 2.15.7.
To illustrate this, compare the behavior of the following command in recent versions of Cri:
option :f, :force, 'use force', argument: :forbidden
run do |opts, args, cmd|
  puts "Options = #{opts.inspect}"
  puts "Force? #{opts[:force]}"
  puts "Option given? #{opts.key?(:force)}"
end
In Cri 2.15.6, the default is not set in the options hash, so the value is nil and #key? returns false:
% ./run
Options = {}
Force? nil
Option given? false
This behavior was inconsistent with what was documented: flag options were (and still are) documented to default to false rather than nil.
In Cri 2.15.7, the default value is false, and explicitly set in the options hash (#key? returns true):
% ./run
Options = {:force=>false}
Force? false
Option given? true
This change made it impossible to detect options that were not explicitly specified, because the behavior of #key? also changed.
In Cri 2.15.8, the default value is also false (as in 2.15.7), but not explicitly set in the options hash (#key? returns false, as in 2.15.6):
% ./run
Options = {}
Force? false
Option given? false
This backwards-incompatible change was not intentional. To fix issue #94, a change in behavior was needed, but this change also affected other, previously-undefined behavior. The new behavior in 2.15.8 should fix the bug fixed in 2.15.7 (#94, #96), without causing the problems introduced in that version.
2.15.7
Fixes:
- 
Options with a forbidden argument now default to false, rather than nil (#94, #96) 
2.15.6
Fixes:
- 
Fixed problem with help header not being shown if the summary is missing (#93) 
2.15.5
Fixes:
- 
Restored compatibility with Ruby 2.3. (#91) 
2.15.4
Fixes:
- 
Removed dependency on colored, which restores functionality to gems thatcoloredbreaks (e.g.awesome_print) (#89, #90)
2.15.3
Fixes:
- 
Made ArgumentList#eachcallable without a block, in which case it returns anEnumerator(mimickingArray) (#87, #88)
2.15.2
Fixes:
- 
Fixed option propagation for two levels or more (#85, #86) 
2.15.1
Fixes:
- 
Made -h/–help not fail when parameters are defined for the command that -h/–help is called on (#76, #78) 
Enhancements:
- 
Made #optionraise an error when unrecognised parameters are passed to it (#77) [Marc-André Lafortune]
2.15.0
Features:
- 
Added support for parameter transformation (#72) 
2.14.0
Features:
- 
Added Cri::Command.load_file
2.13.0
Features:
- 
Added support for explicitly specifying zero parameters using #no_params(#71)
2.12.0
Features:
- 
Added support for parameter naming and validation (#70) 
2.11.0
Features:
- 
Added support for transforming option values (#68) 
2.10.1
Fixes:
- 
Restored Ruby 2.1 compatibility (for now) 
2.10.0
Features:
- 
Added support for skipping option parsing (#62) [Tim Sharpe] 
This release drops support for Ruby 2.1, which is no longer supported.
2.9.1
Fixes:
- 
Made default values be always returned, even when not explicitly specified (#57, #58) 
2.9.0
Features:
- 
Allowed specifying default option value (#55) 
Enhancements:
- 
Added support for specifying values for combined options (#56) 
2.8.0
Features:
- 
Allowed passing hard_exit: falsetoCommand#runto preventSystemExit(#51)
- 
Allowed specifying the default subcommand (#54) 
2.7.1
Fixes:
- 
Fixed some grammatical mistakes 
2.7.0
Features:
- 
Added support for hidden options (#43, #44) [Bart Mesuere] 
Enhancements:
- 
Added option values to help output (#37, #40, #41) 
- 
Made option descriptions wrap (#36, #45) [Bart Mesuere] 
2.6.1
- 
Disable ANSI color codes when not supported (#31, #32) 
2.6.0
- 
Added support for multi-valued options (#29) [Toon Willems] 
2.5.0
- 
Made the default help command handle subcommands (#27) 
- 
Added #rawmethod to argument arrays, returning all arguments including--(#22)
2.4.1
- 
Fixed ordering of option groups on Ruby 1.8.x (#14, #15) 
- 
Fixed ordering of commands when –verbose is passed (#16, #18) 
2.4.0
- 
Allowed either short or long option to be, eh, optional (#9, #10) [Ken Coar] 
- 
Fixed wrap-and-indent behavior (#12) [Ken Coar] 
- 
Moved version information into cri/version
2.3.0
- 
Added colors (#1) 
- 
Added support for marking commands as hidden 
2.2.1
- 
Made command help sort subcommands 
2.2.0
- 
Allowed commands with subcommands to have a run block 
2.1.0
- 
Added support for runners 
- 
Split up local/global command options 
2.0.2
- 
Added command filename to stack traces 
2.0.1
- 
Sorted ambiguous command names 
- 
Restored compatibility with Ruby 1.8.x 
2.0.0
- 
Added DSL 
- 
Added support for nested commands 
1.0.1
- 
Made gem actually include code. D’oh. 
1.0.0
- 
Initial release!