3 releases (breaking)
0.3.0 | Feb 19, 2024 |
---|---|
0.2.0 | Feb 18, 2024 |
0.1.0 | Feb 17, 2024 |
#1695 in Development tools
96 downloads per month
79KB
2K
SLoC
Oclis
CLI (Command Line Interface) app builder based on a simple, obvious specification file.
Motivation
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!
Usage
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.
How It Works
Processing Pipeline of the Generated CLI App
Unsupported CLI designs
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:
Related
Other CLI Builders
- 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.
Manual CLI Frameworks
Check out the repo awesome-cli-frameworks for a full overview.
Specifications
- clig.dev - Command Line Interface Guidelines.
- GNU Table of Long Options
- Heroku CLI Style Guide
- OpenAutoComplete - CLI autocomplete specification.
- POSIX Utility Conventions
Generate GUIs From CLI
- Claui - A GUI generator for clap using egui.
- Gooey - Turn CLI programs into a full GUI application.
- Klask - Automatically create GUI applications from clap apps.
Generate GUIs From Simple Code
Dependencies
~30–45MB
~677K SLoC