packer-cn/vendor/github.com/mitchellh/cli
Adrien Delorme 4ebcbad332
update consul and vault dependencies (#9205)
* update consul and vault dependencies

* update triton sign call accorting to https://github.com/joyent/triton-go/pull/135

* Delete readme.md

* put back github.com/mitchellh/reflectwalk to v1.0.0 and explain why

* fix/fixer_pp_docker_tag_tags.go: simplify deduplication loop and keep seen/stable order
2020-05-11 15:26:01 -04:00
..
.travis.yml update consul and vault dependencies (#9205) 2020-05-11 15:26:01 -04:00
LICENSE Revert "Remove a bunch of unused dependencies (godep v54+ required)" 2016-02-22 11:44:12 -08:00
Makefile update consul and vault dependencies (#9205) 2020-05-11 15:26:01 -04:00
README.md Update mitchellh/cli and add posener/complete dep 2017-10-13 11:57:38 -07:00
autocomplete.go Update mitchellh/cli and add posener/complete dep 2017-10-13 11:57:38 -07:00
cli.go update consul and vault dependencies (#9205) 2020-05-11 15:26:01 -04:00
command.go Update mitchellh/cli and add posener/complete dep 2017-10-13 11:57:38 -07:00
command_mock.go Update mitchellh/cli and add posener/complete dep 2017-10-13 11:57:38 -07:00
go.mod update consul and vault dependencies (#9205) 2020-05-11 15:26:01 -04:00
go.sum go mod vendor && go mod tidy 2019-04-11 14:19:24 +02:00
help.go update cli library 2017-03-27 23:13:26 -07:00
ui.go Revert "Remove a bunch of unused dependencies (godep v54+ required)" 2016-02-22 11:44:12 -08:00
ui_colored.go go mod vendor && go mod tidy 2019-04-11 14:19:24 +02:00
ui_concurrent.go Revert "Remove a bunch of unused dependencies (godep v54+ required)" 2016-02-22 11:44:12 -08:00
ui_mock.go update consul and vault dependencies (#9205) 2020-05-11 15:26:01 -04:00
ui_writer.go Revert "Remove a bunch of unused dependencies (godep v54+ required)" 2016-02-22 11:44:12 -08: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, Consul, Vault, Terraform, and Nomad.

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.

  • Support for shell autocompletion of subcommands, flags, and arguments with callbacks in Go. You don't need to write any shell code.

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