cli – github.com/urfave/cli Index | Examples | Files

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 (
	"github.com/codegangsta/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()[0])
			},
		},
		{
			Name:      "complete",
			ShortName: "c",
			Usage:     "complete a task on the list",
			Action: func(c *cli.Context) {
				println("completed task: ", c.Args()[0])
			},
		},
	}

	app.Run(os.Args)
}

Index

Examples

Variables

var AppHelpTemplate = "" /* 298 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 CommandHelpTemplate = "" /* 176 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.

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
	// The action to execute when no subcommands are specified
	Action func(context *Context)
}
Example

Code:play 

package main

import (
	"fmt"
	"github.com/codegangsta/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", "bob", "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

func (*App) Run

func (a *App) Run(arguments []string)

type BoolFlag

type BoolFlag struct {
	Name  string
	Usage string
}

func (BoolFlag) Apply

func (f BoolFlag) Apply(set *flag.FlagSet)

func (BoolFlag) String

func (f BoolFlag) String() string

type Command

type Command struct {
	Name        string
	ShortName   string
	Usage       string
	Description string
	Action      func(context *Context)
	Flags       []Flag
}

func (Command) HasName

func (c Command) HasName(name string) bool

func (Command) Run

func (c Command) Run(ctx *Context)

type Context

type Context struct {
	App *App
	// 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) *Context

func (*Context) Args

func (c *Context) Args() []string

func (*Context) Bool

func (c *Context) Bool(name string) bool

Looks up the value of a local bool flag, returns false if no bool flag exists

func (*Context) GlobalBool

func (c *Context) GlobalBool(name string) bool

Looks up the value of a global bool flag, returns false if no bool flag exists

func (*Context) GlobalInt

func (c *Context) GlobalInt(name string) int

Looks up the value of a global int flag, returns 0 if no int flag exists

func (*Context) GlobalString

func (c *Context) GlobalString(name string) string

Looks up the value of a global string flag, returns "" if no string flag exists

func (*Context) Int

func (c *Context) Int(name string) int

Looks up the value of a local int flag, returns 0 if no int flag exists

func (*Context) String

func (c *Context) String(name string) string

Looks up the value of a local string flag, returns "" if no string flag exists

type Flag

type Flag interface {
	fmt.Stringer
	Apply(*flag.FlagSet)
}

type IntFlag

type IntFlag struct {
	Name  string
	Value int
	Usage string
}

func (IntFlag) Apply

func (f IntFlag) Apply(set *flag.FlagSet)

func (IntFlag) String

func (f IntFlag) String() string

type StringFlag

type StringFlag struct {
	Name  string
	Value string
	Usage string
}

func (StringFlag) Apply

func (f StringFlag) Apply(set *flag.FlagSet)

func (StringFlag) String

func (f StringFlag) String() string

Source Files

app.go cli.go command.go context.go flag.go help.go

Version
v0.1.0
Published
Jul 22, 2013
Platform
darwin/amd64
Imports
6 packages
Last checked
now

Tools for package owners.