package cli
import "github.com/urfave/cli"
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¶
Code:play
package main import ( "os" "github.com/codegangsta/cli" ) 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) }
Index ¶
- Variables
- func DefaultAppComplete(c *Context)
- func ShowAppHelp(c *Context)
- func ShowCommandCompletions(ctx *Context, command string)
- func ShowCommandHelp(c *Context, command string)
- func ShowCompletions(c *Context)
- func ShowSubcommandHelp(c *Context)
- func ShowVersion(c *Context)
- type App
- func NewApp() *App
- func (a *App) Command(name string) *Command
- func (a *App) Run(arguments []string) error
- func (a *App) RunAndExitOnError()
- func (a *App) RunAsSubcommand(ctx *Context) error
- type Args
- func (a Args) First() string
- func (a Args) Get(n int) string
- func (a Args) Present() bool
- func (a Args) Swap(from, to int) error
- func (a Args) Tail() []string
- type BoolFlag
- type BoolTFlag
- type Command
- type Context
- func NewContext(app *App, set *flag.FlagSet, globalSet *flag.FlagSet) *Context
- func (c *Context) Args() Args
- func (c *Context) Bool(name string) bool
- func (c *Context) BoolT(name string) bool
- func (c *Context) Duration(name string) time.Duration
- func (c *Context) FlagNames() (names []string)
- func (c *Context) Float64(name string) float64
- func (c *Context) Generic(name string) interface{}
- func (c *Context) GlobalBool(name string) bool
- func (c *Context) GlobalDuration(name string) time.Duration
- func (c *Context) GlobalGeneric(name string) interface{}
- 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) String(name string) string
- func (c *Context) StringSlice(name string) []string
- type DurationFlag
- type Flag
- type Float64Flag
- type Generic
- type GenericFlag
- type IntFlag
- type IntSlice
- func (f *IntSlice) Set(value string) error
- func (f *IntSlice) String() string
- func (f *IntSlice) Value() []int
- type IntSliceFlag
- type StringFlag
- type StringSlice
- func (f *StringSlice) Set(value string) error
- func (f *StringSlice) String() string
- func (f *StringSlice) Value() []string
- type StringSliceFlag
Examples ¶
Variables ¶
var AppHelpTemplate = "" /* 489 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 BashCompletionFlag = BoolFlag{ Name: "generate-bash-completion", }
This flag enables bash-completion for all commands and subcommands
var CommandHelpTemplate = "" /* 244 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 HelpFlag = BoolFlag{ Name: "help, h", Usage: "show help", }
This flag prints the help for all commands and subcommands
var HelpPrinter = printHelp
Prints help for the App
var SubcommandHelpTemplate = "" /* 288 byte string literal not displayed */
The text template for the subcommand help topic. cli.go uses text/template to render templates. You can render custom help text by setting this variable.
var VersionFlag = BoolFlag{ Name: "version, v", Usage: "print the version", }
This flag prints the version for the application
var VersionPrinter = printVersion
Prints version for the App
Functions ¶
func DefaultAppComplete ¶
func DefaultAppComplete(c *Context)
Prints the list of subcommands as the default app completion method
func ShowAppHelp ¶
func ShowAppHelp(c *Context)
func ShowCommandCompletions ¶
Prints the custom completions for a given command
func ShowCommandHelp ¶
Prints help for the given command
func ShowCompletions ¶
func ShowCompletions(c *Context)
Prints the lists of commands within a given context
func ShowSubcommandHelp ¶
func ShowSubcommandHelp(c *Context)
Prints help for the given subcommand
func ShowVersion ¶
func ShowVersion(c *Context)
Prints the version number of the App
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 // Boolean to enable bash completion commands EnableBashCompletion bool // Boolean to hide built-in help command HideHelp bool // An action to execute when the bash-completion flag is set BashComplete func(context *Context) // 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) // Execute this function if the proper command cannot be found CommandNotFound func(context *Context, command string) // 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
Code:play
Output:Example¶
package main
import (
"fmt"
"os"
"github.com/codegangsta/cli"
)
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)
}
Hello Jeremy
func NewApp ¶
func NewApp() *App
Creates a new cli Application with some reasonable defaults for Name, Usage, Version and Action.
func (*App) Command ¶
Returns the named command on App. Returns nil if the command does not exist
func (*App) Run ¶
Entry point to the cli app. Parses the arguments slice and routes to the proper flag/args combination
func (*App) RunAndExitOnError ¶
func (a *App) RunAndExitOnError()
Another entry point to the cli app, takes care of passing arguments and error handling
func (*App) RunAsSubcommand ¶
Invokes the subcommand given the context, parses ctx.Args() to generate command-specific flags
type Args ¶
type Args []string
func (Args) First ¶
Returns the first argument, or else a blank string
func (Args) Get ¶
Returns the nth argument, or else a blank string
func (Args) Present ¶
Checks if there are any arguments present
func (Args) Swap ¶
Swaps arguments at the given indexes
func (Args) Tail ¶
Return the rest of the arguments (not the first one) or else an empty string slice
type BoolFlag ¶
func (BoolFlag) Apply ¶
func (BoolFlag) String ¶
type BoolTFlag ¶
func (BoolTFlag) Apply ¶
func (BoolTFlag) String ¶
type Command ¶
type Command struct { // The name of the command Name string // short name of the command. Typically one character ShortName string // A short description of the usage of this command Usage string // A longer explanation of how the command works Description string // The function to call when checking for bash command completions BashComplete func(context *Context) // An action to execute before any sub-subcommands are run, but after the context is ready // If a non-nil error is returned, no sub-subcommands are run Before func(context *Context) error // The function to call when this command is invoked Action func(context *Context) // List of child commands Subcommands []Command // List of flags to parse Flags []Flag // Treat all flags as normal arguments if true SkipFlagParsing bool // Boolean to hide built-in help command HideHelp bool }
Command is a subcommand for a cli.App.
func (Command) HasName ¶
Returns true if Command.Name or Command.ShortName matches given name
func (Command) Run ¶
Invokes the command given the context, parses ctx.Args() to generate command-specific flags
type Context ¶
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 ¶
Creates a new context. For use in when invoking an App or Command action.
func (*Context) Args ¶
Returns the command line arguments associated with the context.
func (*Context) Bool ¶
Looks up the value of a local bool flag, returns false if no bool flag exists
func (*Context) BoolT ¶
Looks up the value of a local boolT flag, returns false if no bool flag exists
func (*Context) Duration ¶
Looks up the value of a local time.Duration flag, returns 0 if no time.Duration flag exists
func (*Context) FlagNames ¶
Returns a slice of flag names used in this context.
func (*Context) Float64 ¶
Looks up the value of a local float64 flag, returns 0 if no float64 flag exists
func (*Context) Generic ¶
Looks up the value of a local generic flag, returns nil if no generic flag exists
func (*Context) GlobalBool ¶
Looks up the value of a global bool flag, returns false if no bool flag exists
func (*Context) GlobalDuration ¶
Looks up the value of a global time.Duration flag, returns 0 if no time.Duration flag exists
func (*Context) GlobalGeneric ¶
Looks up the value of a global generic flag, returns nil if no generic 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) Int ¶
Looks up the value of a local int flag, returns 0 if no int 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) IsSet ¶
Determines if the flag was actually set 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 DurationFlag ¶
func (DurationFlag) Apply ¶
func (f DurationFlag) Apply(set *flag.FlagSet)
func (DurationFlag) String ¶
func (f DurationFlag) String() string
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 Generic ¶
Generic is a generic parseable type identified by a specific flag
type GenericFlag ¶
GenericFlag is the flag type for types implementing Generic
func (GenericFlag) Apply ¶
func (f GenericFlag) Apply(set *flag.FlagSet)
func (GenericFlag) String ¶
func (f GenericFlag) String() string
type IntFlag ¶
func (IntFlag) Apply ¶
func (IntFlag) String ¶
type IntSlice ¶
type IntSlice []int
func (*IntSlice) Set ¶
func (*IntSlice) String ¶
func (*IntSlice) Value ¶
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 EnvVar string }
func (StringSliceFlag) Apply ¶
func (f StringSliceFlag) Apply(set *flag.FlagSet)
func (StringSliceFlag) String ¶
func (f StringSliceFlag) String() string
Source Files ¶
app.go cli.go command.go context.go flag.go help.go
- Version
- v1.3.0
- Published
- Aug 10, 2014
- Platform
- js/wasm
- Imports
- 10 packages
- Last checked
- now –
Tools for package owners.