accept boolean arg pairs like "--arg-name true" #67
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.
This PR allows CLI arguments like
--idle-timeout-enabled false
to work as expected. This format currently causes unexpected results for users, because the value must be in--arg=value
format, otherwise the supplied boolean flag is resolved totrue
.Specifically, this change scans the command tree for all boolean flags, identifies any present in the cli arguments that have a separate value arg (e.g.,
--idle-timeout-enabled false
), and collapses them into single argument format (--idle-timeout-enabled=false
) prior to being parsed by the Flag parser. This allows both the 2-arg and 1-arg versions of boolean flags to work identically based on the user's preference. This also enforcesstrconv.ParseBool
's accepted formats (t
,T
,f
,F
,true
,True
,false
,False
,TRUE
,FALSE
,0
,1
) and reliably errors if the provided value is invalid.