JMS #4: Parsing command flags with context

This commit is contained in:
Jeremy Saenz
2013-07-17 17:00:02 -07:00
parent 5f85917dc2
commit 6f22315082
5 changed files with 106 additions and 85 deletions

57
context.go Normal file
View File

@@ -0,0 +1,57 @@
package cli
import (
"flag"
"strconv"
)
// Context is a type that is passed through to
// each Handler action in a cli application. Context
// can be used to retrieve context-specific Args and
// parsed command-line options.
type Context struct {
flagSet *flag.FlagSet
}
func NewContext(flagSet *flag.FlagSet) *Context {
return &Context{flagSet}
}
func (c *Context) IntFlag(name string) int {
flag := c.flagSet.Lookup(name)
if flag != nil {
val, err := strconv.Atoi(flag.Value.String())
if err != nil {
panic(err)
}
return val
} else {
return 0
}
}
func (c *Context) BoolFlag(name string) bool {
flag := c.flagSet.Lookup(name)
if flag != nil {
val, err := strconv.ParseBool(flag.Value.String())
if err != nil {
panic(err)
}
return val
} else {
return false
}
}
func (c *Context) StringFlag(name string) string {
flag := c.flagSet.Lookup(name)
if flag != nil {
return flag.Value.String()
} else {
return ""
}
}
func (c *Context) Args() []string {
return c.flagSet.Args()
}