Documentation ¶
Overview ¶
Package cli provides a minimal framework for creating and organizing command line Go applications. cli is designed to be easy to understand and write, the most simple cli application can be written as follows:
func main() { cli.NewApp().Run(os.Args) }
Of course this application does not do much, so let's make this an actual application:
func main() { app := cli.NewApp() app.Name = "greet" app.Usage = "say a greeting" app.Action = func(c *cli.Context) { println("Greetings") } app.Run(os.Args) }
Example ¶
package main import ( "github.com/murdinc/cli" "os" ) func main() { app := cli.NewApp() app.Name = "todo" app.Usage = "task list on the command line" app.Commands = []cli.Command{ { Name: "add", ShortName: "a", Usage: "add a task to the list", Action: func(c *cli.Context) { println("added task: ", c.Args().First()) }, }, { Name: "complete", ShortName: "c", Usage: "complete a task on the list", Action: func(c *cli.Context) { println("completed task: ", c.Args().First()) }, }, } app.Run(os.Args) }
Output:
Index ¶
- Variables
- func AnsiCode(code string) string
- func BoxPromptBool(title string, message string) bool
- func BoxPromptString(title string, message string) string
- func ErrorLine(message string)
- func Information(message string)
- func PrintAnsi(templ string, data interface{})
- func PrintError(c *Context)
- func PromptBool(message string) bool
- func PromptInt(message string, max int) int
- func PromptPassword(message string) string
- func PromptString(message string) string
- func ShowAppHelp(c *Context)
- func ShowCommandHelp(c *Context, command string)
- func ShowErrorMessage(title string, message string)
- func ShowVersion(c *Context)
- type App
- type Args
- type Argument
- type BoolFlag
- type Command
- type Context
- func (c *Context) Args() Args
- func (c *Context) Bool(name string) bool
- func (c *Context) Float64(name string) float64
- func (c *Context) GlobalBool(name string) bool
- func (c *Context) GlobalInt(name string) int
- func (c *Context) GlobalIntSlice(name string) []int
- func (c *Context) GlobalString(name string) string
- func (c *Context) GlobalStringSlice(name string) []string
- func (c *Context) Int(name string) int
- func (c *Context) IntSlice(name string) []int
- func (c *Context) IsSet(name string) bool
- func (c *Context) NamedArg(k string) string
- func (c *Context) String(name string) string
- func (c *Context) StringSlice(name string) []string
- type Flag
- type Float64Flag
- type IntFlag
- type IntSlice
- type IntSliceFlag
- type StringFlag
- type StringSlice
- type StringSliceFlag
- type Table
- type TableOptions
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var AppHelpTemplate = `` /* 433-byte string literal not displayed */
The text template for the Default help topic. cli.go uses text/template to render templates. You can render custom help text by setting this variable.
var BoxPromptTemplate = `` /* 303-byte string literal not displayed */
var CommandHelpTemplate = `` /* 424-byte string literal not displayed */
The text template for the command help topic. cli.go uses text/template to render templates. You can render custom help text by setting this variable.
var ErrorLineTemplate = `
{{ ansi "fgwhite"}}{{ ansi "bgred"}}{{.}}{{ ansi ""}}
`
var ErrorMessageTemplate = `` /* 298-byte string literal not displayed */
var InformationTemplate = `
{{ ansi "fgblack"}}{{ ansi "bgcyan"}}{{.}}{{ ansi ""}}
`
Functions ¶
func BoxPromptString ¶
Input Prompt String
func Information ¶
func Information(message string)
func PromptBool ¶
func PromptPassword ¶
func PromptString ¶
func ShowCommandHelp ¶
Prints help for the given command
Types ¶
type App ¶
type App struct { // The name of the program. Defaults to os.Args[0] Name string // Description of the program. Usage string // Version of the program Version string // List of commands to execute Commands []Command // List of flags to parse Flags []Flag // An action to execute before any subcommands are run, but after the context is ready // If a non-nil error is returned, no subcommands are run Before func(context *Context) error // The action to execute when no subcommands are specified Action func(context *Context) // Compilation date Compiled time.Time // Author Author string // Author e-mail Email string }
App is the main structure of a cli application. It is recomended that and app be created with the cli.NewApp() function
Example ¶
package main import ( "fmt" "github.com/murdinc/cli" "os" ) func main() { // set args for examples sake os.Args = []string{"greet", "--name", "Jeremy"} app := cli.NewApp() app.Name = "greet" app.Flags = []cli.Flag{ cli.StringFlag{Name: "name", Value: "bob", Usage: "a name to say"}, } app.Action = func(c *cli.Context) { fmt.Printf("Hello %v\n", c.String("name")) } app.Run(os.Args) }
Output: Hello Jeremy
func NewApp ¶
func NewApp() *App
Creates a new cli Application with some reasonable defaults for Name, Usage, Version and Action.
type Argument ¶
type Argument struct { // The name of the command Name string // short name of the command. Typically one character Usage string // A longer explaination of how the command works Description string // Required defines if this argument is required for the command or not Optional bool }
Argument can be required or optional arguments for a cli.App commands.
type Command ¶
type Command struct { // The name of the command Name string // short name of the command. Typically one character ShortName string // A short example of a formed command Example string // A description of what this command does Description string // The function to call when this command is invoked Action func(context *Context) // The list of required and optional arguments Arguments []Argument // List of flags to parse Flags []Flag }
Command is a subcommand for a cli.App.
func (Command) BuildCustomArgs ¶
type Context ¶
type Context struct { App *App SetArgs map[string]string // contains filtered or unexported fields }
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.
func NewContext ¶
func NewContext(app *App, set *flag.FlagSet, globalSet *flag.FlagSet, setArgs map[string]string) *Context
Creates a new context. For use in when invoking an App or Command action.
func (*Context) Bool ¶
Looks up the value of a local bool flag, returns false if no bool flag exists
func (*Context) Float64 ¶
Looks up the value of a local float64 flag, returns 0 if no float64 flag exists
func (*Context) GlobalBool ¶
Looks up the value of a global bool flag, returns false if no bool flag exists
func (*Context) GlobalInt ¶
Looks up the value of a global int flag, returns 0 if no int flag exists
func (*Context) GlobalIntSlice ¶
Looks up the value of a global int slice flag, returns nil if no int slice flag exists
func (*Context) GlobalString ¶
Looks up the value of a global string flag, returns "" if no string flag exists
func (*Context) GlobalStringSlice ¶
Looks up the value of a global string slice flag, returns nil if no string slice flag exists
func (*Context) IntSlice ¶
Looks up the value of a local int slice flag, returns nil if no int slice flag exists
func (*Context) String ¶
Looks up the value of a local string flag, returns "" if no string flag exists
func (*Context) StringSlice ¶
Looks up the value of a local string slice flag, returns nil if no string slice flag exists
type Flag ¶
type Flag interface { fmt.Stringer // Apply Flag settings to the given flag set Apply(*flag.FlagSet) // contains filtered or unexported methods }
Flag is a common interface related to parsing flags in cli. For more advanced flag parsing techniques, it is recomended that this interface be implemented.
type Float64Flag ¶
func (Float64Flag) Apply ¶
func (f Float64Flag) Apply(set *flag.FlagSet)
func (Float64Flag) String ¶
func (f Float64Flag) String() string
type IntSliceFlag ¶
func (IntSliceFlag) Apply ¶
func (f IntSliceFlag) Apply(set *flag.FlagSet)
func (IntSliceFlag) String ¶
func (f IntSliceFlag) String() string
type StringFlag ¶
func (StringFlag) Apply ¶
func (f StringFlag) Apply(set *flag.FlagSet)
func (StringFlag) String ¶
func (f StringFlag) String() string
type StringSlice ¶
type StringSlice []string
func (*StringSlice) Set ¶
func (f *StringSlice) Set(value string) error
func (*StringSlice) String ¶
func (f *StringSlice) String() string
func (*StringSlice) Value ¶
func (f *StringSlice) Value() []string
type StringSliceFlag ¶
type StringSliceFlag struct { Name string Value *StringSlice Usage string }
func (StringSliceFlag) Apply ¶
func (f StringSliceFlag) Apply(set *flag.FlagSet)
func (StringSliceFlag) String ¶
func (f StringSliceFlag) String() string
type Table ¶
type Table struct { Rows [][]string Columns [][]string Options *TableOptions HasHeader bool // contains filtered or unexported fields }
func NewTable ¶
func NewTable(rows [][]string, options *TableOptions) *Table