You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
841 B

package cli
import "os"
// The name of the program. Defaults to os.Args[0]
var Name = os.Args[0]
// Description of the program.
var Usage = "<No Description>"
// Version of the program
var Version = "0.0.0"
// List of commands to execute
var Commands []Command
var Flags []Flag
// The action to execute when no subcommands are specified
var Action = ShowHelp
func Run(arguments []string) {
set := flagSet(Flags)
set.Parse(arguments[1:])
context := NewContext(set, set)
args := context.Args()
if len(args) > 0 {
name := args[0]
for _, c := range append(Commands, HelpCommand) {
if c.Name == name || c.ShortName == name {
locals := flagSet(c.Flags)
locals.Parse(args[1:])
c.Action(NewContext(locals, set))
return
}
}
}
// Run default Action
Action(context)
}
type Handler func(context *Context)