Guinea is a CLI library written in Go.

See it on Github.

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.

The problem solved by this library is common in all my command line projects, so this library is a dependency of nearly all my command line programs written in Go.