Канонічні специфікації для всього на Exercism
configlet - це інструмент, який допомагає супровідникам треків підтримувати свій трек.
Основна функція configlet - виконувати лінтинг: перевіряти, чи правильно структуровані (конфігураційні) файли треку, і синтаксично, і семантично. Неправильно налаштовані треки можуть синхронізуватися з помилками, мати поганий вигляд на сайті або давати не найкращий досвід користувача, тож перевірки configlet відіграють важливу роль у підтримці цілісності Exercism. Повний список правил, які перевіряє лінтер, можна знайти тут.
Другорядна функція configlet - генерувати документи. Configlet може генерувати документи двох типів:
introduction.md концептуальної вправи.instructions.md практичної вправи.Про те, як генеруються ці документи, читайте тут.
Третя функція configlet - надавати різні дані для практичних вправ.
Практична вправа на треку Exercism часто реалізується за специфікацією з репозиторію exercism/problem-specifications.
Exercism свідомо вимагає, щоб кожна вправа мала власну копію певних файлів (як-от .docs/instructions.md), навіть якщо ця вправа вже є в problem-specifications.
Тому в configlet є команда sync, яка вміє перевіряти, чи синхронізовані такі практичні вправи на треку з цим джерелом, і оновлювати їх, коли є оновлення.
З problem-specifications можна оновити три види даних: документацію, метадані та тести.
Також один вид даних можна заповнити з файлу config.json рівня треку: шляхи до файлів у конфігураційних файлах вправ.
Зауважмо, що у випусках configlet 4.0.0-alpha.34 і раніших команда sync працювала лише з тестами.
Щоб відстежувати, які тести реалізовано для конкретної практичної вправи, вправа повинна містити файл .meta/tests.toml.
Тести в цьому файлі ідентифікуються за UUID, і кожен тест має булеве значення (англ. Boolean), яке вказує, чи реалізовано його в цій вправі.
Докладніше про те, як синхронізувати різні частини вправи, читайте тут.
За допомогою configlet можна швидко згенерувати каркас файлів для нового підходу, статті або вправи.
Докладніше про те, як створювати ці файли, читайте тут.
Вправи, треки та концепції ідентифікуються за UUID.
Про те, як генерувати UUID, читайте тут.
У configlet є команда fmt, яка допомагає однаково форматувати JSON-файли в репозиторії треку.
Команда fmt форматує такі файли:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonДокладніше про команду форматування читайте тут.
Configlet поширюється як окремий бінарний файл. Кожен трек має мати скрипт bin/fetch-configlet, а також може мати скрипт bin/fetch-configlet.ps1. Перший - bash-скрипт, а другий - скрипт PowerShell.
Запуск одного з цих скриптів завантажує найновішу версію configlet у каталог bin. Після цього configlet можна використовувати, запускаючи bin/configlet або bin/configlet.exe відповідно.
Усі треки повинні інтегрувати функціональність лінтингу configlet у своє налаштування CI (безперервна інтеграція). Найпростіший спосіб зробити це - скористатися GitHub-дією configlet CI.