A declarative, simple, fast, and fun Go package for building command line tools with no external dependencies.
urfave/cli is a Go package for building command-line applications with a declarative API. It simplifies defining commands, flags, and help systems while supporting features like shell completion and flexible input sources. The library is designed to be fast, simple, and dependency-free, relying only on the Go standard library.
Go developers who need to create command-line tools, utilities, or applications with subcommands, flags, and professional help systems.
Developers choose urfave/cli for its clean declarative syntax, zero external dependencies, and comprehensive feature set including dynamic shell completion and modular input sources, making CLI development efficient and enjoyable.
A declarative, simple, fast, and fun package for building command line tools in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows defining commands and flags using a clean, structured approach, making CLI development straightforward and efficient, as emphasized in the README.
Relies solely on the Go standard library, ensuring minimal overhead and reducing dependency conflicts, which is a core feature highlighted in the documentation.
Supports bash, zsh, fish, and PowerShell out of the box, enhancing user experience without additional setup, as noted in the key features.
Offers a permissive and customizable help output, allowing developers to tailor help text to their application's needs, per the README.
Advanced features like documentation generation and structured input sources require separate modules (cli-docs, cli-altsrc), adding complexity to setup and maintenance.
The project is maintained by unpaid volunteers, which can lead to slower response times for bugs or feature requests compared to commercially backed alternatives.
Some niche functionalities, such as advanced validation or integration with specific file formats, may be lacking or require custom implementation beyond the core library.