Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Repository files navigation

🚨 This project is archived. 🚨Learn More

Go CLI Library GoDoc

cli is a library for implementing command-line interfaces in Go. cli is the library that powers the CLI for Packer, Consul, Vault, Terraform, Nomad, and more.

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"
)
funcmain() {
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()
iferr!=nil {
log.Println(err)
}
os.Exit(exitStatus)
}

About

A Go library for implementing command-line interfaces.

Resources

Stars

1.7k stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages