Scope and Non-Goals¶
cl-cli aims for feature parity with the mainstream CLI frameworks (clap,
cobra, click, argparse) on everything that is fundamentally a parsing,
dispatch, help, or completion concern.
A few capabilities those frameworks offer are deliberately left to the application, because they are runtime-I/O or policy concerns rather than argument handling:
- Interactive prompting for missing values, hidden/password input, and
confirmation prompts (click's
prompt=/hide_input=). Reading a terminal with echo disabled is an I/O concern; clap and cobra defer it too. A handler can prompt frominvocation-stdout/invocation-stderras needed. - Filesystem-touching validators (existence/readability checks). Declare
intent with
:value-hint :file/:dirfor completion, and enforce with a custom:parser; whether a path must already exist is per-app policy. - Config-file parsing (TOML/YAML). The
:configlayer accepts an already-parsed plist and slots it between environment variables and literal defaults (seeoption-value-source); choosing and reading the file format stays with the caller. - Stdin values, progress bars, and completion-script installation are
pure runtime behavior; the library gives you a
--token you can special-case, the streams to draw on, andrender-*-completionoutput to install where you like.
Everything else the reference frameworks expose — including terminal-aware color/width, value provenance, "did you mean" suggestions, and configurable exit codes — is built in and covered in the Guide.