Allow bool flags to be set to true or false explicitly.
This commit is contained in:
@@ -566,3 +566,14 @@ func TestErrorMissingArgs(t *testing.T) {
|
||||
require.Error(t, err)
|
||||
require.Equal(t, "expected \"<one> <two>\"", err.Error())
|
||||
}
|
||||
|
||||
func TestBoolOverride(t *testing.T) {
|
||||
var cli struct {
|
||||
Flag bool `default:"true"`
|
||||
}
|
||||
p := mustNew(t, &cli)
|
||||
_, err := p.Parse([]string{"--flag=false"})
|
||||
require.NoError(t, err)
|
||||
_, err = p.Parse([]string{"--flag", "false"})
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
@@ -211,7 +211,12 @@ func (r *Registry) RegisterDefaults() *Registry {
|
||||
type boolMapper struct{}
|
||||
|
||||
func (boolMapper) Decode(ctx *DecodeContext, target reflect.Value) error {
|
||||
target.SetBool(true)
|
||||
if ctx.Scan.Peek().Type == FlagValueToken {
|
||||
token := ctx.Scan.Pop()
|
||||
target.SetBool(token.Value == "true")
|
||||
} else {
|
||||
target.SetBool(true)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (boolMapper) IsBool() bool { return true }
|
||||
|
||||
Reference in New Issue
Block a user