CLI (Command Line Interface) app builder based on a simple, obvious specification file.
Building a CLI application is a repetitive task. The same code is written over and over again. But fear not, Oclis is here to help you out!
cargo install oclis
oclis init
- Creates anoclis.ncl
specifcation file.- Adapt the specification file to your liking.
(Check out the examples directory for inspiration.) - Run
oclis build
to generate the CLI parsing code
(It automatically detects the main repo language, but only PureScript is supported at the moment.) - Add missing dependencies to your project.
(E.g. for PureScript check out the spago.yaml file.) - Define the handler functions for your commands.
(Check out the main function of Transity for an example.) - Commit the generated code to the repository.
Some features of other CLI frameworks are deliberately not supported:
- Specifying a flag several times. (e.g.
tar -v -v -v
) This is error prone as it's easy to accidentally add it several times. Use a numerical verbosity flag instead (e.g.tar -v=3
) or define your own counting system (e.g.tar -v=xxx
) - Specifying flags/options after the arguments.
(e.g.
pandoc in.md --output=out.pdf
) Disallowing this helps to prevent errors from accidentally providing an argument which is understood as a flag/option. Suggested alternatives:- Sub-command:
pandoc convert in.md out.pdf
- Option first:
pandoc --output=out.pdf in.md
- Extra option:
pandoc --input=in.md --output=out.pdf
- Sub-command:
- CLI Definition Language - DSL for defining command line interfaces of C++ programs.
- Decli - Declarative CLI tool builder.
- docopt - Command-line interface description language.
- make-cli - Declarative CLI framework for Node.js.
Check out the repo awesome-cli-frameworks for a full overview.
- clig.dev - Command Line Interface Guidelines.
- GNU Table of Long Options
- Heroku CLI Style Guide
- OpenAutoComplete - CLI autocomplete specification.
- POSIX Utility Conventions