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.