https://github.com/minibikini/mandate
Build robust, elegant CLIs with minimal boilerplate
https://github.com/minibikini/mandate
cli cli-framework mix
Last synced: 3 months ago
JSON representation
Build robust, elegant CLIs with minimal boilerplate
- Host: GitHub
- URL: https://github.com/minibikini/mandate
- Owner: minibikini
- License: mit
- Created: 2025-02-28T18:13:31.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-03-16T22:50:33.000Z (10 months ago)
- Last Synced: 2025-09-11T16:00:55.768Z (4 months ago)
- Topics: cli, cli-framework, mix
- Language: Elixir
- Homepage:
- Size: 87.9 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/minibikini/mandate/actions/workflows/elixir.yml)
[](https://hex.pm/packages/mandate)
[](https://hex.pm/packages/mandate)
[](https://hexdocs.pm/mandate)
# Mandate
A declarative framework for building robust, elegant command-line interfaces (CLIs) in Elixir with minimal boilerplate.
## Key Features
- **Declarative Approach:** Mandate allows you to _declare_ the structure of your CLI using a simple DSL, rather than writing imperative code to parse arguments manually.
- **Minimal Boilerplate:** Mandate handles argument parsing, validation, type conversion, and help text generation so you can focus on the core logic of your tasks.
- **Mix and Igniter compatibility:** Mandate tasks can be defined as `use Mandate, as: :mix_task` or `use Mandate, as: :igniter_task` for seamless integration with existing systems.
- **Extensible:** Built on top of Spark, a framework for creating DSLs, making it easy to extend and customize for your specific needs.
- **Comprehensive Help:** Automatically generates help text and usage information based on your task definit ions.
- **Type Validation:** Built-in support for common data types and validation rules.
## Installation
The package can be installed by adding `mandate` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:mandate, "~> 0.30"}
]
end
```
## License
MIT License
Copyright (c) 2025 Egor Kislitsyn