lambdaisland / lambdaisland/cli
Q: Is there a way to fail if unknown flags/arguments are passed?
Nobody has claimed this yet.
- Dominant language
- Clojure
- Stars
- 56
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Hi,
If the user passes an undefined flag is there a way to fail the cli/dispatch?
I assume that is a design choice to accept flags which have not been defined, but in some cases might be risky if fore example someone has a typo in a flag.
For example look at the following (contrived) example:
;; this command deletes the given argument
(def delete identity)
(cli/dispatch*
{:command #'delete
:flags ["-v, --verbose" "Increases verbosity"
"--dry-run" "Simulate but do not action"
"--input FILE" "Specify the input file/folder"
"--env=<dev|prod|test>" {:doc "Select an environment" :default "prod"}]}
;; typo in --dryrun (the correct should be --dry-run)
["--input" "all-my-data" "--dryrun"])
;; => {:lambdaisland.cli/sources
;; {:env "--env=<dev|prod|test> (default value)",
;; :input "--input command line flag"},
;; :env "prod",
;; :lambdaisland.cli/argv [],
;; :input "all-my-data",
;; :dryrun 1}
In this example the user might thing that he provided the --dryrun argument, the dispatcher will just dispatch as a new flag ignoring the fact that it was an unintentional mistake and because delete doesn't see the flag :dry-run true it will perform the actual delete.
Is there a way to add a :strict-mode true and fail on undefined flags?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the cli/dispatch* entry point shown in the example and trace how undefined arguments become entries in the dispatched result. Define the expected strict-mode behavior for unknown flags, then add coverage for the typo case and confirm that valid flags still work.
Written by the indexing model from the issue text.
Assessment
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100