I just pushed a release candidate for version 1.3.0 of mixlib-cli.
This version adds a new class method
use_separate_default_options(true | false). When enabled, the default values specified in the
option declarations are stored in a different variable than user-supplied values parsed from the command line. The goal of this work is to allow knife plugin authors to specify default values for options in the mixlib-cli DSL while preserving the correct order of options overriding (default < config file < command line). For more detail about the issue, see the mixlib-cli pull request and discussion in CHEF-3497. Once this update to mixlib-cli is officially released, we’ll patch knife to use the new functionality.
Unfortunately, chef’s dependency on mixlib-cli is completely optimistic (>=1.2.0, IIRC), so the new version will be used for all chef installs once it’s released. I believe the change to mixlib-cli is implemented such that nothing will break, but I’d love it if you guys could give it a spin. Installing it on your workstation and using knife as normal should be enough to put it through its paces.
To install it:
gem install mixlib-cli --pre
If everything works out, I’ll ship a final release in a few days, so please let me know either way after you give it a go. Also feel free to ask questions if you’re using mixlib-cli in your own applications and want to know about the new functionality.