lambdaisland / lambdaisland/cli
Q: Is there a way to fail if unknown flags/arguments are passed?
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Clojure
- Estrellas
- 56
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
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?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en el punto de entrada cli/dispatch* mostrado en el ejemplo y sigue cómo los argumentos indefinidos se convierten en entradas del resultado despachado. Define el comportamiento esperado de strict-mode para las flags desconocidas, después añade cobertura para el caso del error tipográfico y confirma que las flags válidas siguen funcionando.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Área
- cli
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100