Merge pull request #70 from unihorn/27

Add BoolTFlag type
main
Jeremy Saenz 11 years ago
commit 4097aa09fe

@ -38,6 +38,11 @@ func (c *Context) Bool(name string) bool {
return lookupBool(name, c.flagSet) return lookupBool(name, c.flagSet)
} }
// Looks up the value of a local boolT flag, returns false if no bool flag exists
func (c *Context) BoolT(name string) bool {
return lookupBoolT(name, c.flagSet)
}
// Looks up the value of a local string flag, returns "" if no string flag exists // Looks up the value of a local string flag, returns "" if no string flag exists
func (c *Context) String(name string) string { func (c *Context) String(name string) string {
return lookupString(name, c.flagSet) return lookupString(name, c.flagSet)
@ -192,6 +197,19 @@ func lookupBool(name string, set *flag.FlagSet) bool {
return false return false
} }
func lookupBoolT(name string, set *flag.FlagSet) bool {
f := set.Lookup(name)
if f != nil {
val, err := strconv.ParseBool(f.Value.String())
if err != nil {
return true
}
return val
}
return false
}
func normalizeFlags(flags []Flag, set *flag.FlagSet) error { func normalizeFlags(flags []Flag, set *flag.FlagSet) error {
visited := make(map[string]bool) visited := make(map[string]bool)
set.Visit(func(f *flag.Flag) { set.Visit(func(f *flag.Flag) {

@ -37,6 +37,13 @@ func TestContext_Bool(t *testing.T) {
expect(t, c.Bool("myflag"), false) expect(t, c.Bool("myflag"), false)
} }
func TestContext_BoolT(t *testing.T) {
set := flag.NewFlagSet("test", 0)
set.Bool("myflag", true, "doc")
c := cli.NewContext(nil, set, set)
expect(t, c.BoolT("myflag"), true)
}
func TestContext_Args(t *testing.T) { func TestContext_Args(t *testing.T) {
set := flag.NewFlagSet("test", 0) set := flag.NewFlagSet("test", 0)
set.Bool("myflag", false, "doc") set.Bool("myflag", false, "doc")

@ -131,6 +131,25 @@ func (f BoolFlag) getName() string {
return f.Name return f.Name
} }
type BoolTFlag struct {
Name string
Usage string
}
func (f BoolTFlag) String() string {
return fmt.Sprintf("%s\t%v", prefixedNames(f.Name), f.Usage)
}
func (f BoolTFlag) Apply(set *flag.FlagSet) {
eachName(f.Name, func(name string) {
set.Bool(name, true, f.Usage)
})
}
func (f BoolTFlag) getName() string {
return f.Name
}
type StringFlag struct { type StringFlag struct {
Name string Name string
Value string Value string

Loading…
Cancel
Save