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.Error(t, err)
|
||||||
require.Equal(t, "expected \"<one> <two>\"", err.Error())
|
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{}
|
type boolMapper struct{}
|
||||||
|
|
||||||
func (boolMapper) Decode(ctx *DecodeContext, target reflect.Value) error {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
func (boolMapper) IsBool() bool { return true }
|
func (boolMapper) IsBool() bool { return true }
|
||||||
|
|||||||
Reference in New Issue
Block a user