configlet fmt


El repositorio de un track de Exercism contiene muchos archivos JSON, entre ellos:

  • El archivo config.json del track.
  • Para cada concepto, un archivo .meta/config.json y un archivo links.json.
  • Para cada ejercicio de concepto o ejercicio de práctica, un archivo .meta/config.json.

Estos archivos son más legibles si tienen un formato coherente en todo Exercism, por lo que configlet tiene un comando fmt para reescribir los archivos JSON de un track en una forma canónica.

El comando fmt formatea los siguientes archivos:

  • config.json
  • exercises/{concept,practice}/*/.approaches/config.json
  • exercises/{concept,practice}/*/.articles/config.json
  • exercises/{concept,practice}/*/.meta/config.json

Uso

El comando fmt formatea los archivos 'meta/config.json' de los ejercicios.

configlet [global-options] fmt [command-options]

Global options:
  -h, --help                   Show this help message and exit
      --version                Show this tool's version information and exit
  -t, --track-dir <dir>        Specify a track directory to use instead of the current directory
  -v, --verbosity <verbosity>  The verbosity of output. Allowed values: q[uiet], n[ormal], d[etailed]

Options for fmt:
  -e, --exercise <slug>        Only operate on this exercise
  -u, --update                 Prompt to write formatted files
  -y, --yes                    Auto-confirm the prompt from --update

Un configlet fmt sin más no hace cambios en el track y comprueba el formato del archivo .meta/config.json de cada ejercicio de concepto y ejercicio de práctica, y del archivo config.json del track.

Para imprimir una lista de rutas para las que todavía no existe un archivo .meta/config.json de ejercicio con formato (saliendo con un código de salida distinto de cero si al menos un ejercicio carece de un archivo de configuración con formato):

configlet fmt

Para que se te pida escribir los archivos de configuración con formato, añade la opción --update (o -u para abreviar):

configlet fmt --update

Para escribir los archivos de configuración con formato de forma no interactiva, añade la opción --yes (o -y para abreviar):

configlet fmt --update --yes

Para trabajar con un único ejercicio, usa la opción --exercise (o -e para abreviar). Por ejemplo, para escribir de forma no interactiva el archivo de configuración con formato del ejercicio prime-factors:

configlet fmt -uy -e prime-factors

Al escribir archivos JSON, configlet fmt hará lo siguiente:

  • Escribir los pares clave/valor en el orden canónico.

  • Usar dos espacios para la indentación.

  • Usar una línea independiente para cada elemento de un array JSON y para cada clave de un objeto JSON.

  • Eliminar los pares clave/valor de las claves que son opcionales y tienen valores vacíos. Por ejemplo, se elimina "source": "".

  • Eliminar "test_runner": true de los archivos de configuración de los ejercicios de práctica. Esta es una clave opcional: la especificación dice que una clave test_runner omitida implica el valor true.

  • Cuando un objeto JSON tiene más de un par clave/valor con el mismo nombre de clave, conserva solo el último.

El orden canónico de las claves de un archivo .meta/config.json de ejercicio es:

- authors
- [contributors]
- files
  - solution
  - test
  - exemplar           (Concept Exercises only)
  - example            (Practice Exercises only)
  - [editor]
  - [invalidator]
- [language_versions]
- [forked_from]        (Concept Exercises only)
- [icon]               (Concept Exercises only)
- [test_runner]        (Practice Exercises only)
- blurb
- [source]
- [source_url]
- [custom]

donde los corchetes indican que la clave encerrada es opcional.

Ten en cuenta que configlet fmt solo opera sobre los ejercicios que existen en el archivo config.json del track. Por lo tanto, si estás implementando un ejercicio nuevo en un track y quieres dar formato a su archivo .meta/config.json, añade primero el ejercicio al archivo config.json del track. Si el ejercicio aún no está listo para mostrarse a los usuarios, establece su valor status en wip.

El código de salida es 0 cuando todos los archivos de configuración vistos tienen formato al salir configlet, y 1 en caso contrario.