[MIXLIB-CLI-63] Add deprecated_option support#65
Merged
Conversation
85036d0 to
145ba5f
Compare
This commit adds deprecated option support by exposing a new ClassMethod, `deprecated_option`. It will generate a corresponding deprecated option, and if that option is used it will handle mapping of the old option to the new and issue a warning. `deprecated_option` accepts a subset of the parameters that `option` accepts. Most importantly, a deprecated option can't have a default value. There's a practical reason for this and a philosophical one. Practically, it makes it easy to track the situation where someone has set `use_separate_defaults` to `false`. In that case, we currently can't tell whether the user provided the flag, or it was set as a default. This could have been addressed, but: Philosphically it makes more sense to not have a default value on a deprecated item. If it's deprecated, you want people to stop using it. If it has a default, it's effectively forced in-use at all times. See function docs for further accepted parameters. To allow deprecated options without warnings, use parse_options as `parse_options(ARGV, show_deprecations: false)`. By default, warnings will be shown. This also moves some formatting code into its own class - it was causing methods to get mixed in that client classes didn't need; and I reached the point where I needed to access the formatting functions across methods in both Mixlib::CLI and Mixlib::CLI::ClassMethods. It made more sense to move them outside of the mixed-in bits, since it wasn't a concern of the caller that would be inheriting those methods. Signed-off-by: Marc A. Paradise <marc.paradise@gmail.com>
marcparadise
commented
Jun 6, 2019
marcparadise
commented
Jun 6, 2019
marcparadise
commented
Jun 6, 2019
Signed-off-by: Marc A. Paradise <marc.paradise@gmail.com>
5bfcff0 to
840b5a6
Compare
zenspider
approved these changes
Jun 6, 2019
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This commit adds deprecated option support by exposing a
new ClassMethod,
deprecated_option. It will generate acorresponding deprecated option, and if that option is used it will
handle mapping of the old option to the new and issue a warning.
deprecated_optionaccepts a subset of the parameters thatoptionaccepts.Most importantly, a deprecated option can't have a default value.
There's a practical reason for this and a philosophical one.
Practically, it makes it easy to track the situation where someone has
set
use_separate_defaultstofalse. In that case, we currentlycan't tell whether the user provided the flag, or it was set as a default.
This could have been addressed, but:
Philosophically it makes more sense to not have a default value on a
deprecated item. If it's deprecated, you want people to stop using it.
If it has a default, it's effectively forced in-use at all times.
See function docs for further accepted parameters.
To allow deprecated options without warnings, use parse_options as
parse_options(ARGV, show_deprecations: false). By default, warningswill be shown.
This also moves some formatting code into its own class -
it was causing methods to get mixed in that client classes didn't
need; and I reached the point where I needed to access the formatting
functions across methods in both Mixlib::CLI and
Mixlib::CLI::ClassMethods. It made more sense to move them outside of
the mixed-in bits, since it wasn't a concern of the caller that would be
inheriting those methods.
Signed-off-by: Marc A. Paradise marc.paradise@gmail.com
Related Issue
Resolves #63
Types of changes
Checklist: