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.