Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. ex_cli

ex_cli

MITElixir

A DSL for building user-friendly command-line applications in Elixir with automatic help generation.

Visit WebsiteGitHubGitHub
218 stars16 forks0 contributors

What is ex_cli?

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.

Target Audience

Elixir developers who need to build command-line tools, Mix tasks, or standalone executables for their applications or systems.

Value Proposition

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.

Overview

User friendly CLI apps for Elixir

Use Cases

Best For

  • Creating Mix tasks with built-in help and argument parsing
  • Building standalone CLI tools as escripts in Elixir
  • Defining complex command hierarchies with subcommands
  • Rapid prototyping of command-line interfaces
  • Generating user-friendly help text automatically
  • Structuring CLI applications with aliases and options

Not Ideal For

  • Projects requiring mature, production-ready CLI libraries with complete feature sets like man page generation or help commands
  • Teams building CLIs in languages other than Elixir, as it's language-specific
  • Applications needing advanced interactive features such as shell completion or complex input validation
  • Environments where minimal dependencies are critical, since ExCLI adds a library overhead

Pros & Cons

Pros

Declarative DSL Simplicity

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.

Automatic Help Generation

It generates formatted usage instructions and command descriptions automatically, saving manual effort—evident from the usage output when parsing fails.

Seamless Mix and Escript Integration

ExCLI integrates directly with Elixir's Mix tasks and escripts, enabling the same CLI definitions for both, as demonstrated in the integration sections.

Command Aliases and Context

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'.

Cons

Immature and Incomplete

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.

Limited Ecosystem and Tooling

As an Elixir-specific library, it lacks the extensive community support and plugins found in more established CLI frameworks for other languages.

Potential Breaking Changes

Early development stages mean API instability, with future updates possibly requiring code changes in dependent projects, as noted in the versioning.

Frequently Asked Questions

Quick Stats

Stars218
Forks16
Contributors0
Open Issues3
Last commit7 years ago
CreatedSince 2016

Tags

#elixir#developer-tools#cli-framework#dsl#mix-tasks#cli#elixir-library#command-line#escript

Built With

E
Elixir

Links & Resources

Website

Included in

Elixir13.1k
Auto-fetched 21 hours ago

Related Projects

ratatouilleratatouille

A TUI (terminal UI) kit for Elixir

Stars850
Forks41
Last commit3 years ago
owlowl

A toolkit for writing command-line user interfaces.

Stars529
Forks15
Last commit3 months ago
progress_barprogress_bar

Command-line progress bars and spinners for Elixir.

Stars338
Forks22
Last commit2 months ago
scribescribe

Pretty-print tables of Elixir structs and maps.

Stars306
Forks12
Last commit6 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub