tree: 60adedb79d1d05b09ec2a6fc98fb551b01e6ca2a [path history] [tgz]
  1. .travis.yml
  2. cli.go
  3. cli_test.go
  4. command.go
  5. command_mock.go
  6. command_mock_test.go
  7. help.go
  8. LICENSE
  9. README.google
  10. README.md
  11. ui.go
  12. ui_colored.go
  13. ui_colored_test.go
  14. ui_concurrent.go
  15. ui_concurrent_test.go
  16. ui_mock.go
  17. ui_mock_test.go
  18. ui_test.go
  19. ui_writer.go
  20. ui_writer_test.go
go/src/github.com/mitchellh/cli/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.

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