58 lines
1014 B
Go
58 lines
1014 B
Go
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) Int(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) Bool(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) String(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()
|
|
}
|