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 an oclis.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
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
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
-
Sparkle - Infer user interfaces from type signatures.
-
Streamlit - Turns data scripts into shareable web apps.