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.
packer/vendor/github.com/mitchellh/cli
Chris Bednarski dbdb988634
Vendor all dependencies
10 years ago
..
.travis.yml Vendor all dependencies 10 years ago
LICENSE Vendor all dependencies 10 years ago
README.md Vendor all dependencies 10 years ago
cli.go Vendor all dependencies 10 years ago
command.go Vendor all dependencies 10 years ago
command_mock.go Vendor all dependencies 10 years ago
help.go Vendor all dependencies 10 years ago
ui.go Vendor all dependencies 10 years ago
ui_colored.go Vendor all dependencies 10 years ago
ui_concurrent.go Vendor all dependencies 10 years ago
ui_mock.go Vendor all dependencies 10 years ago
ui_writer.go Vendor all dependencies 10 years ago

README.md

Go CLI Library GoDoc

cli is a library for implementing powerful command-line interfaces in Go. cli is the library that powers the CLI for Packer, Serf, and Consul.

Features

  • Easy sub-command based CLIs: cli foo, cli bar, etc.

  • Support for nested subcommands such as cli foo bar.

  • Optional support for default subcommands so cli does something other than error.

  • Automatic help generation for listing subcommands

  • Automatic help flag recognition of -h, --help, etc.

  • Automatic version flag recognition of -v, --version.

  • Helpers for interacting with the terminal, such as outputting information, asking for input, etc. These are optional, you can always interact with the terminal however you choose.

  • Use of Go interfaces/types makes augmenting various parts of the library a piece of cake.

Example

Below is a simple example of creating and running a CLI

package main

import (
	"log"
	"os"

	"github.com/mitchellh/cli"
)

func main() {
	c := cli.NewCLI("app", "1.0.0")
	c.Args = os.Args[1:]
	c.Commands = map[string]cli.CommandFactory{
		"foo": fooCommandFactory,
		"bar": barCommandFactory,
	}

	exitStatus, err := c.Run()
	if err != nil {
		log.Println(err)
	}

	os.Exit(exitStatus)
}