terraform/vendor/github.com/mitchellh/cli
Paul Hinze 6fe2703665 Vendor all dependencies w/ Godep
* Remove `make updatedeps` from Travis build. We'll follow up with more
   specific plans around dependency updating in subsequent PRs.
 * Update all `make` targets to set `GO15VENDOREXPERIMENT=1` and to
   filter out `/vendor/` from `./...` where appropriate.
 * Temporarily remove `vet` from the `make test` target until we can
   figure out how to get it to not vet `vendor/`. (Initial
   experimentation failed to yield the proper incantation.)

Everything is pinned to current master, with the exception of:

 * Azure/azure-sdk-for-go which is pinned before the breaking change today
 * aws/aws-sdk-go which is pinned to the most recent tag

The documentation still needs to be updated, which we can do in a follow
up PR. The goal here is to unblock release.
2016-01-29 15:08:48 -06:00
..
.travis.yml Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
LICENSE Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
README.md Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
cli.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
cli_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
command.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
command_mock.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
command_mock_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
help.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_colored.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_colored_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_concurrent.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_concurrent_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_mock.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_mock_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_writer.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00
ui_writer_test.go Vendor all dependencies w/ Godep 2016-01-29 15:08:48 -06:00

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)
}