urfave/cli(opens in a new tab)
Language: Go
A declarative, simple, fast, and fun package for building command line tools in Go
- stars
- 24,306
- watchers
- 279
- forks
- 1,854
- open issues
- 28
- Last updated
- 10/29/2026
Language: Go
A declarative, simple, fast, and fun package for building command line tools in Go
urfave/cli is a declarative, simple, fast, and fun package for building command line tools in Go featuring:
bash, zsh, fish, and powershell-a -b -c can be shortened to -abc)man and Markdown (supported via the
urfave/cli-docs module)urfave/cli-altsrc module)See the hosted documentation website at https://cli.urfave.org. Contents of
this website are built from the ./docs directory.
You can use the following build tags:
When set, the default help and fish completion are rendered without using
text/template, which makes the Go linker disable dead code elimination (see
Binary Size).
The output is the same, but help templates can not be customized:
RootCommandHelpTemplate, CommandHelpTemplate, SubcommandHelpTemplate
and FishCompletionTemplate are constants;CustomRootCommandHelpTemplate or CustomHelpTemplate), it panics;wrap and wrapAt are ignored.Replacing cli.HelpPrinter works as usual, except it receives "root",
"command" or "subcommand" as templ instead of the default template text
(a custom template is passed as is).
Check the Q&A discussions. If you don't find answer to your question, create a new discussion.
If you found a bug or have a feature request, create a new issue.
Please keep in mind that this project is run by unpaid volunteers.
See LICENSE.