El primer ejercicio de cada track es un ejercicio «Hello, World!» muy sencillo.
El objetivo de este ejercicio es comprobar rápidamente que todo está conectado correctamente. Esto confirmará que el usuario tiene instalado correctamente el entorno de programación, que sabe cómo ejecutar las pruebas y que es capaz de hacer que pasen. Además, en el caso del cliente de línea de comandos de Exercism (CLI) también garantiza que tiene la CLI instalada y configurada correctamente, y que el sitio entrega los ficheros correctos para el ejercicio sin enviar artefactos innecesarios. Por último, garantiza que el usuario conoce el ciclo de descargar un ejercicio con la CLI, resolver un problema en su entorno de desarrollo local y enviar su solución de vuelta al sitio.
En otras palabras, todavía no se trata realmente de aprender nada sobre el lenguaje en sí. Buscamos algo realmente sencillo.
Es probable que también sea la parte más difícil de configurar bien el repositorio del track, ya que en la implementación de un ejercicio intervienen muchas piezas.
El ejercicio «Hello, World!» tiene algunas reglas especiales:
prerequisites
practices
El ejercicio «Hello, World!» (y, de hecho, todos los ejercicios de Exercism) requiere un conjunto específico de ficheros:
Antes de crear el ejercicio «Hello, World!», tienes que tomar algunas decisiones sobre los nombres y las rutas de los ficheros específicos del track (suite de pruebas, implementación stub, implementación de ejemplo y los ficheros adicionales que haya).
Como norma general, usa nombres que sean idiomáticos para el lenguaje.
Cuando no haya preferencias claras, opta por estructuras de directorios poco profundas.
El script de CI tiene que poder identificar la implementación de ejemplo, así que conviene elegir un nombre base genérico que puedan usar todos los ejercicios, por ejemplo, example, sample o reference-solution.
Una vez elegidas las rutas de los ficheros específicas del track, debes configurarlas en la clave files del fichero config.json de la raíz.
La clave files sirve como plantilla para todos los ejercicios, lo que permite que cualquier herramienta (algunas de las cuales usaremos enseguida) sepa dónde buscar los ficheros.
Puedes usar varios marcadores de posición para configurar fácilmente el slug del ejercicio (hello-world en este caso).
Si tu track usa PascalCase para sus ficheros, la clave files podría tener este aspecto:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
Los ficheros de ejemplo deben guardarse dentro del directorio .meta.
Para más información, consulta la documentación de la clave files.
Una vez especificadas las plantillas de rutas de ficheros, puedes crear rápidamente la estructura de ficheros del ejercicio «Hello, World!» ejecutando los siguientes comandos desde el directorio raíz del track:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Para que el sitio web te incluya como autor del ejercicio, sigue estos pasos:
En el fichero .meta/config.json del ejercicio:
authors
Para que esto funcione, tendrás que vincular tu cuenta de Exercism a GitHub. Puedes hacerlo en el sitio web, en la sección Integrations de la página de configuración.
Los autores de ejercicios también reciben reputación
Los repositorios de track más recientes pueden usar el script bin/add-practice-exercise (código fuente) para añadir ejercicios nuevos:
bin/add-exercise -a <github_username> two-fer
Si trabajas en un repositorio de track que no tiene este fichero, puedes copiarlos en tu repositorio usando el enlace al código fuente de arriba.
Una vez creados los ficheros de la estructura, tendrás que:
Una parte fundamental de añadir un ejercicio es añadir pruebas. A grandes rasgos, hay dos opciones al implementar uno de los ejercicios anteriores:
canonical-data.json del ejercicio
https://exercism.org/exercises/hello-world para ver qué tracks han implementado un ejercicio concreto).Para el ejercicio «Hello, World!» solo habrá un caso de prueba, así que cualquiera de las dos opciones debería servir.
El fichero de implementación de ejemplo debe contener el código necesario para resolver las pruebas.
El fichero stub debe tener una solución casi funcional para las pruebas, pero con el texto «Hello, World!» sustituido por «Goodbye, Mars!». Truco: basta con copiar, pegar y modificar la solución de ejemplo.
Cuando termines el ejercicio, añade tu nombre de usuario de GitHub al array "authors" del fichero .meta/config.json del ejercicio.
Así nos aseguraremos de acreditarte correctamente como creador del ejercicio.
Para verificar que el ejercicio está configurado correctamente, puedes usar la funcionalidad de linting integrada de la herramienta configlet.
El primer paso es descargar la herramienta configlet, para lo cual hemos creado dos scripts:
bin/fetch-configlet: ejecútalo si usas *nix o macOSbin/fetch-configlet.ps1: ejecútalo si usas WindowsEjecutar uno de estos scripts desde el directorio raíz del repositorio del track descargará el binario bin/configlet o bin/configlet.exe, respectivamente.
A continuación, puedes comprobar que el ejercicio es correcto ejecutando bin/configlet lint.
Es probable que configlet notifique el siguiente error:
The `tags` array is empty:
/path/to/track/config.json
Este error se corregirá en el paso Preparación para el lanzamiento, así que puedes:
El flujo de trabajo de configlet ejecutará configlet lint automáticamente cada vez que se suba algo a main o a una pull request.