A DSL for building user-friendly command-line applications in Elixir with automatic help generation.
ExCLI is an Elixir library for building command-line applications with a focus on user-friendliness and developer productivity. It provides a domain-specific language (DSL) to define commands, options, and arguments, automatically generating help text and usage instructions. It solves the problem of creating structured, maintainable CLIs without repetitive boilerplate code.
Elixir developers who need to build command-line tools, Mix tasks, or standalone executables for their applications or systems.
Developers choose ExCLI for its elegant DSL that reduces complexity, its seamless integration with Mix and escripts, and its automatic generation of professional help documentation, saving time and ensuring consistency.
User friendly CLI apps for Elixir
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The clean DSL reduces boilerplate by allowing intuitive definition of commands, options, and arguments, as shown in the README example with commands like :hello and options like :verbose.
It generates formatted usage instructions and command descriptions automatically, saving manual effort—evident from the usage output when parsing fails.
ExCLI integrates directly with Elixir's Mix tasks and escripts, enabling the same CLI definitions for both, as demonstrated in the integration sections.
Supports short aliases for commands and provides a context object with parsed data, improving user experience and developer access, like using 'hi' as an alias for 'hello'.
At version 0.1.0, it's early-stage; the roadmap admits missing features like a help command and man page generation, limiting production readiness.
As an Elixir-specific library, it lacks the extensive community support and plugins found in more established CLI frameworks for other languages.
Early development stages mean API instability, with future updates possibly requiring code changes in dependent projects, as noted in the versioning.