lambdaisland / lambdaisland/cli

Q: Is there a way to fail if unknown flags/arguments are passed?

Abierto
#11 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.