Las especificaciones canónicas de todo lo que hay en Exercism
configlet es una herramienta que ayuda a los mantenedores de un track con el mantenimiento de su track.
La función principal de configlet es hacer linting: comprobar si los ficheros (de configuración) de un track están bien estructurados, tanto sintáctica como semánticamente. Los tracks mal configurados pueden no sincronizarse correctamente, pueden verse mal en la web o pueden ofrecer una experiencia de usuario poco óptima, por lo que las comprobaciones de configlet desempeñan un papel importante a la hora de mantener la integridad de Exercism. Puedes encontrar la lista completa de reglas que comprueba el linter aquí.
La función secundaria de configlet es generar documentos. Hay dos tipos de documentos que configlet puede generar:
introduction.md de un ejercicio de concepto.instructions.md de un ejercicio de práctica.Puedes ver cómo se generan estos documentos aquí.
La función terciaria de configlet es proporcionar diversos datos para los ejercicios de práctica.
Un ejercicio de práctica de un track de Exercism suele implementarse a partir de una especificación del repositorio exercism/problem-specifications.
Exercism exige deliberadamente que cada ejercicio tenga su propia copia de determinados ficheros (como .docs/instructions.md), incluso cuando ese ejercicio ya existe en problem-specifications.
Por eso, configlet tiene un comando sync, que puede comprobar que esos ejercicios de práctica de un track están sincronizados con esa fuente de origen y puede actualizarlos cuando hay actualizaciones disponibles.
Hay tres tipos de datos que se pueden actualizar desde problem-specifications: documentación, metadatos y tests.
También hay un tipo de datos que se puede rellenar desde el fichero config.json del track: las rutas de fichero en los ficheros de configuración de los ejercicios.
Ten en cuenta que, en las versiones 4.0.0-alpha.34 y anteriores de configlet, el comando sync solo actuaba sobre los tests.
Para llevar un registro de qué tests están implementados en un ejercicio de práctica concreto, el ejercicio debe contener un fichero .meta/tests.toml.
Los tests de este fichero se identifican por su UUID y cada test tiene un valor Boolean que indica si ese ejercicio lo implementa.
Puedes encontrar los detalles sobre cómo sincronizar las distintas partes de un ejercicio aquí.
Configlet se puede usar para generar rápidamente el esqueleto de los ficheros de un nuevo enfoque, artículo o ejercicio.
Puedes aprender más sobre cómo crear estos ficheros aquí.
Los ejercicios, los tracks y los conceptos se identifican mediante un UUID.
Puedes ver cómo generar UUID aquí.
Configlet tiene un comando fmt que ayuda a mantener un formato coherente en los ficheros JSON del repositorio del track.
El comando fmt da formato a los siguientes ficheros:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonPuedes aprender más sobre el comando de formato aquí.
configlet se distribuye como un binario independiente. Cada track debería tener un script bin/fetch-configlet y podría tener también un script bin/fetch-configlet.ps1. El primero es un script de bash y el segundo, un script de PowerShell.
Ejecutar uno de estos scripts descarga la última versión de configlet en el directorio bin. Después puedes usar configlet ejecutando bin/configlet o bin/configlet.exe, respectivamente.
Todos los tracks deberían integrar la funcionalidad de linting de configlet en su configuración de integración continua. La forma más sencilla de hacerlo es usar la GitHub Action de CI de configlet.