Documentation ¶
Overview ¶
Package gocmd is a library for building command line applications
Index ¶
- Constants
- type Cmd
- func (cmd *Cmd) Description() string
- func (cmd *Cmd) FlagArgs(name string) []string
- func (cmd *Cmd) FlagErrors() []error
- func (cmd *Cmd) FlagValue(name string) interface{}
- func (cmd *Cmd) LookupFlag(name string) ([]string, bool)
- func (cmd *Cmd) Name() string
- func (cmd *Cmd) PrintUsage()
- func (cmd *Cmd) PrintVersion(extra bool)
- func (cmd *Cmd) Version() string
- type ConfigType
- type FlagHandler
- type Logger
- type Options
Examples ¶
Constants ¶
const ( // ConfigTypeAuto is a configuration type that enables automatic functionalities // such as usage and version printing, exit on error, etc. // It sets AnyError, AutoHelp, AutoVersion, ExitOnError = true ConfigTypeAuto = iota + 1 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cmd ¶
type Cmd struct {
// contains filtered or unexported fields
}
Cmd represents a command
func New ¶
New returns a command by the given options
Example (Command) ¶
os.Args = []string{"gocmd.test", "math", "sqrt", "-n=9"} flags := struct { Help bool `short:"h" long:"help" description:"Display usage" global:"true"` Version bool `short:"v" long:"version" description:"Display version"` VersionEx bool `long:"vv" description:"Display version (extended)"` Echo struct { Settings bool `settings:"true" allow-unknown-arg:"true"` } `command:"echo" description:"Print arguments"` Math struct { Sqrt struct { Number float64 `short:"n" long:"number" required:"true" description:"Number"` } `command:"sqrt" description:"Calculate square root"` Pow struct { Base float64 `short:"b" long:"base" required:"true" description:"Base"` Exponent float64 `short:"e" long:"exponent" required:"true" description:"Exponent"` } `command:"pow" description:"Calculate base exponential"` } `command:"math" description:"Math functions" nonempty:"true"` }{} // Echo command gocmd.HandleFlag("Echo", func(cmd *gocmd.Cmd, args []string) error { fmt.Printf("%s\n", strings.Join(cmd.FlagArgs("Echo")[1:], " ")) return nil }) // Math commands gocmd.HandleFlag("Math.Sqrt", func(cmd *gocmd.Cmd, args []string) error { fmt.Println(math.Sqrt(flags.Math.Sqrt.Number)) return nil }) gocmd.HandleFlag("Math.Pow", func(cmd *gocmd.Cmd, args []string) error { fmt.Println(math.Pow(flags.Math.Pow.Base, flags.Math.Pow.Exponent)) return nil }) // Init the app gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &flags, ConfigType: gocmd.ConfigTypeAuto, })
Output: 3
Example (Usage) ¶
os.Args = []string{"gocmd.test"} gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &struct { Help bool `short:"h" long:"help" description:"Display usage" global:"true"` Version bool `short:"v" long:"version" description:"Display version"` VersionEx bool `long:"vv" description:"Display version (extended)"` Echo struct { Settings bool `settings:"true" allow-unknown-arg:"true"` } `command:"echo" description:"Print arguments"` Math struct { Sqrt struct { Number float64 `short:"n" long:"number" required:"true" description:"Number"` } `command:"sqrt" description:"Calculate square root"` Pow struct { Base float64 `short:"b" long:"base" required:"true" description:"Base"` Exponent float64 `short:"e" long:"exponent" required:"true" description:"Exponent"` } `command:"pow" description:"Calculate base exponential"` } `command:"math" description:"Math functions"` }{}, ConfigType: gocmd.ConfigTypeAuto, })
Output: Usage: basic [options...] COMMAND [options...] A basic app Options: -h, --help Display usage -v, --version Display version --vv Display version (extended) Commands: echo Print arguments math Math functions sqrt Calculate square root -n, --number Number pow Calculate base exponential -b, --base Base -e, --exponent Exponent
Example (Usage_h) ¶
os.Args = []string{"gocmd.test", "-h"} gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &struct { Help bool `short:"h" long:"help" description:"Display usage" global:"true"` }{}, ConfigType: gocmd.ConfigTypeAuto, })
Output: Usage: basic [options...] A basic app Options: -h, --help Display usage
Example (Usage_help) ¶
os.Args = []string{"gocmd.test", "--help"} gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &struct { Help bool `long:"help" description:"Display usage" global:"true"` }{}, ConfigType: gocmd.ConfigTypeAuto, })
Output: Usage: basic [options...] A basic app Options: --help Display usage
Example (Version) ¶
os.Args = []string{"gocmd.test", "-vv"} gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &struct { Version bool `short:"v" long:"version" description:"Display version"` VersionEx bool `long:"vv" description:"Display version (extended)"` }{}, ConfigType: gocmd.ConfigTypeAuto, })
Output: App name : basic App version : 1.0.0 Go version : vTest
Example (Version_v) ¶
os.Args = []string{"gocmd.test", "-v"} gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &struct { Version bool `short:"v" long:"version" description:"Display version"` }{}, ConfigType: gocmd.ConfigTypeAuto, })
Output: 1.0.0
Example (Version_version) ¶
os.Args = []string{"gocmd.test", "--version"} gocmd.New(gocmd.Options{ Name: "basic", Version: "1.0.0", Description: "A basic app", Flags: &struct { Version bool `long:"version" description:"Display version"` }{}, ConfigType: gocmd.ConfigTypeAuto, })
Output: 1.0.0
func (*Cmd) Description ¶
Description returns the description of the command
func (*Cmd) FlagArgs ¶
FlagArgs returns the flag arguments by the given flag name Nested flags are separated by dot (i.e. Foo.Bar)
func (*Cmd) FlagErrors ¶
FlagErrors returns the list of the flag errors
func (*Cmd) FlagValue ¶
FlagValue returns the flag value by the given flag name Nested flags are separated by dot (i.e. Foo.Bar)
func (*Cmd) LookupFlag ¶
LookupFlag returns the flag arguments by the given flag name Nested flags are separated by dot (i.e. Foo.Bar)
func (*Cmd) PrintVersion ¶
PrintVersion prints version information
Example ¶
cmd, err := gocmd.New(gocmd.Options{ Version: "1.0.0", ConfigType: gocmd.ConfigTypeAuto, }) if err == nil { cmd.PrintVersion(false) }
Output: 1.0.0
type FlagHandler ¶
type FlagHandler struct {
// contains filtered or unexported fields
}
FlagHandler represents a flag handler
func HandleFlag ¶
HandleFlag registers the flag handle for the given flag name
func (*FlagHandler) SetExitOnError ¶
func (fh *FlagHandler) SetExitOnError(v bool)
SetExitOnError sets the value of the exitOnError
func (*FlagHandler) SetPriority ¶
func (fh *FlagHandler) SetPriority(v int)
SetPriority sets the value of the priority
type Logger ¶
type Logger interface {
Printf(format string, v ...interface{})
}
Logger is the interface that must be implemented by loggers
type Options ¶
type Options struct { // Name is the command name Name string // Version is the command version Version string // Description is the command description Description string // Flags hold user defined command line arguments and commands Flags interface{} // Logger represents the logger that is being used for printing errors Logger Logger // ConfigType is the configuration type ConfigType ConfigType // AnyError checks all the errors and returns the first one if any AnyError bool // AutoHelp prints the usage content when the help flags are detected AutoHelp bool // AutoVersion prints the version content when the version flags are detected AutoVersion bool // ExitOnError prints the error and exits the program when there is an error ExitOnError bool }
Options represents the options that can be set when creating a new command
Directories ¶
Path | Synopsis |
---|---|
_examples
|
|
Package flagset provides functions for handling command line arguments
|
Package flagset provides functions for handling command line arguments |
Package table provides functions for handling tables in terminal
|
Package table provides functions for handling tables in terminal |
Package template provides functions for handling templates
|
Package template provides functions for handling templates |