Le premier exercice de chaque parcours est un exercice « Hello, World! » très simple.
Cet exercice a pour but de vérifier rapidement que tout est correctement relié. Cela permet de confirmer que l'utilisateur a bien installé son environnement de programmation, qu'il sait exécuter les tests et qu'il est capable de les faire passer. Au-delà de ça, dans le cas du client en ligne de commande d'Exercism (la CLI), cela permet aussi de vérifier que la CLI est installée et configurée correctement, et que le site fournit les bons fichiers pour l'exercice sans transmettre d'artefacts inutiles. Enfin, cela garantit que l'utilisateur connaît le cycle : télécharger un exercice avec la CLI, résoudre un problème dans son environnement de développement local, puis soumettre sa solution au site.
Autrement dit, il ne s'agit pas encore vraiment d'apprendre quoi que ce soit sur le langage de programmation lui-même. On vise quelque chose de vraiment très simple.
C'est aussi probablement la partie la plus difficile quand il s'agit de bien configurer le dépôt du parcours, car implémenter un exercice fait intervenir beaucoup d'éléments.
L'exercice « Hello, World! » obéit à quelques règles particulières :
prerequisites
practices
L'exercice « Hello, World! » (et d'ailleurs tous les exercices sur Exercism) nécessite un ensemble précis de fichiers :
Avant de pouvoir créer l'exercice « Hello, World! », tu dois prendre quelques décisions concernant les noms et les chemins de fichiers propres au parcours (suite de tests, implémentation stub, implémentation d'exemple et éventuels fichiers supplémentaires).
En règle générale, utilise des noms qui sont idiomatiques pour le langage. Quand il n'y a pas de préférence forte, privilégie des arborescences de répertoires moins profondes. L'implémentation d'exemple doit pouvoir être identifiée par le script d'intégration continue, il est donc conseillé de choisir un nom de base générique que tous les exercices peuvent utiliser, par exemple example, sample ou reference-solution.
Une fois les chemins de fichiers propres au parcours choisis, tu dois les configurer dans la clé files du fichier config.json à la racine. La clé files sert de modèle pour tous les exercices, ce qui permet à n'importe quel outillage (dont une partie sera utilisée dans un instant) de savoir où chercher les fichiers. Tu peux utiliser différents espaces réservés pour configurer facilement le slug de l'exercice (hello-world dans ce cas).
Si ton parcours utilise PascalCase pour ses fichiers, la clé files pourrait ressembler à ceci :
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
Le ou les fichiers d'exemple doivent être stockés dans le répertoire .meta.
Pour plus d'informations, consulte la documentation sur la clé files.
Une fois les modèles de chemins de fichiers définis, tu peux rapidement créer la structure des fichiers de l'exercice « Hello, World! » en exécutant les commandes suivantes depuis le répertoire racine du parcours :
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Pour que le site te liste comme auteur de l'exercice, suis ces étapes :
Dans le fichier .meta/config.json de l'exercice :
authors
Pour que cela fonctionne, tu dois lier ton compte Exercism à GitHub. Tu peux le faire sur le site, dans la section Intégrations de la page Paramètres.
Les auteurs d'exercices reçoivent aussi de la réputation
Les dépôts de parcours plus récents peuvent utiliser le script bin/add-practice-exercise (source) pour ajouter de nouveaux exercices :
bin/add-exercise -a <github_username> two-fer
Si tu travailles sur un dépôt de parcours qui ne contient pas ce fichier, n'hésite pas à le copier dans ton dépôt à partir du lien source ci-dessus.
Une fois les fichiers créés, tu devras ensuite :
L'ajout de tests est un élément essentiel quand on ajoute un exercice. Grosso modo, il y a deux options pour implémenter l'un des exercices ci-dessus :
canonical-data.json de l'exercice
https://exercism.org/exercises/hello-world pour avoir un aperçu des parcours qui ont implémenté un exercice donné).Pour l'exercice « Hello, World! », il n'y aura qu'un seul cas de test, donc les deux options devraient convenir.
Le fichier d'implémentation d'exemple doit contenir le code nécessaire pour passer les tests.
Le fichier stub doit contenir une solution presque fonctionnelle qui passe les tests, mais dans laquelle le texte « Hello, World! » est remplacé par « Goodbye, Mars! ». Astuce : tu peux simplement copier-coller l'implémentation d'exemple, puis la modifier.
Une fois l'exercice terminé, ajoute ton nom d'utilisateur GitHub au tableau "authors" dans le fichier .meta/config.json de l'exercice.
Cela nous permettra de t'attribuer correctement la création de l'exercice.
Pour vérifier que l'exercice est correctement configuré, tu peux utiliser la fonctionnalité d'analyse statique intégrée à l'outil configlet.
La première étape consiste à récupérer l'outil configlet, pour lequel nous avons créé deux scripts :
bin/fetch-configlet : à exécuter quand tu utilises *nix ou macOSbin/fetch-configlet.ps1 : à exécuter quand tu utilises WindowsExécuter l'un de ces scripts depuis le répertoire racine du dépôt du parcours télécharge le binaire bin/configlet ou bin/configlet.exe selon le cas.
Tu peux ensuite vérifier que l'exercice est correct en exécutant bin/configlet lint.
Il est probable que configlet signale l'erreur suivante :
The `tags` array is empty:
/path/to/track/config.json
Cette erreur sera corrigée à l'étape Prépare le lancement, donc soit :
Le workflow configlet exécute automatiquement configlet lint à chaque fois que quelque chose est poussé sur main ou vers une pull request.