Guinea is a CLI library written in Go.

User interface of command line programs is often organised in the form of subcommands. As an example, the go command lets the user invoke multiple subcommands such as go build or go get. The same is true for many other programs such as git which uses subcommands such as git add or git commit. This library makes the implementation of such interface quick and easy for the programmer.

The library allows the user to create command trees with multiple nested subcommands, each with its own help, documentation, options and arguments. These structures are automatically processed by the library to invoke the right subcommands with the proper parameters and to provide feedback to the users.

I use this library in most of my command line projects written in Go as I find command line interfaces based on subcommands to be approachable and easy to use.