You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a simple package which allows you to write a CLI with distinct subcommands.
Overview
Using this library you can enable your command-line application to have a number of subcommands, allowing things like this to be executed:
$ application one
$ application two [args]
$ application help
In addition to allowing the user to specify a sub-command via the first argument it will also allow a default to be used if your binary has the same name as a sub-command.
For example if you had a binary named gobox you could create a symlink called ls:
$ ln -s gobox ls
$ ./ls
Here running ls is the same as running gobox ls, and argument parsing would work the same too:
$ gobox ls --foo
$ ./ls --foo
Bash Completion
All applications using this library will find it easy to generate a bash-completion script, via the following addition to their init-file:
$ source <(application bash-completion)
The generated completion-script will allow TAB-completion of the sub-commands, as well as their options.
Rationale
There are several frameworks for building a simple CLI application, such as Corba. But those are relatively heavyweight.
This is designed to implement the minimum required support:
Allow an application to register sub-commands:
foo help
Show help
foo version
Show the version
foo server
Launch a HTTP-server
etc.
Allow flags to be defined on a per-subcommand basis.
Allow the sub-commands to process any remaining arguments.
Allow trivial bash-completion scripts to be generated.