Перша вправа на кожному треку - дуже проста вправа «Hello, World!».
Мета цієї вправи - швидко переконатися, що все зібрано й налаштовано правильно. Це підтвердить, що користувач правильно встановив середовище програмування, уміє запускати тести й може зробити так, щоб вони проходили. Крім того, для клієнта командного рядка Exercism (CLI) це також засвідчує, що CLI встановлено й налаштовано правильно, і що сайт надсилає правильні файли для вправи, не додаючи зайвих артефактів. І нарешті, це переконує, що користувач знайомий з циклом: завантажити вправу за допомогою CLI, розвʼязати задачу у своєму локальному середовищі розробки й надіслати рішення назад на сайт.
Іншими словами, поки що це не про вивчення самої мови. Ми прагнемо чогось гранично простого.
Імовірно, це також буде найскладнішою частиною правильного налаштування репозиторію треку, адже під час реалізації вправи взаємодіє багато різних частин.
До вправи «Hello, World!» застосовуються деякі особливі правила:
prerequisites
practices
Вправа «Hello, World!» (як і всі вправи на Exercism) потребує конкретного набору файлів:
Перш ніж створити вправу «Hello, World!», нам потрібно визначитися з назвами й шляхами файлів, специфічних для треку (набір тестів, заготовка реалізації, приклад реалізації та будь-які додаткові файли).
Зазвичай варто використовувати назви, природні для мови.
Якщо сильних уподобань немає, варто надавати перевагу простішим структурам каталогів.
Скрипт CI має вміти розпізнавати приклад реалізації, тому варто вибрати загальну базову назву, яку можна використовувати в усіх вправах, наприклад example, sample або reference-solution.
Вибравши шляхи до файлів для треку, налаштуймо їх у ключі files кореневого файлу config.json.
Ключ files буде шаблоном для всіх вправ, завдяки чому будь-який інструментарій (частину якого ми використаємо за мить) знатиме, де шукати файли.
Можна використовувати різні заповнювачі, щоб легко налаштувати слаг вправи (у цьому випадку hello-world).
Якщо на треку для файлів використовується PascalCase, ключ files може мати такий вигляд:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
Файли прикладу потрібно зберігати в каталозі .meta.
Докладніше дивіться в документації ключа files.
Вказавши шаблони шляхів до файлів, можна швидко створити каркас файлів вправи «Hello, World!», виконавши з кореневого каталогу треку такі команди:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Щоб сайт зазначив вас як автора вправи, виконайте такі кроки:
У файлі .meta/config.json вправи:
authors
Щоб це працювало, потрібно привʼязати свій акаунт Exercism до GitHub. Це можна зробити на сайті в розділі «Інтеграції» сторінки налаштувань.
Автори вправ також отримують репутацію
Новіші репозиторії треків можуть використовувати скрипт bin/add-practice-exercise (джерело), щоб додавати нові вправи:
bin/add-exercise -a <github_username> two-fer
Якщо в репозиторії треку немає цього файлу, його можна скопіювати за посиланням на джерело вище.
Коли каркас файлів створено, потрібно:
Додавання тестів - ключова частина роботи над вправою. Загалом є два варіанти реалізації такої вправи:
canonical-data.json вправи
https://exercism.org/exercises/hello-world, щоб побачити, які треки реалізували конкретну вправу).Для вправи «Hello, World!» буде лише один тестовий випадок, тож підійде будь-який із цих варіантів.
Файл прикладу реалізації має містити код, потрібний для проходження тестів.
Файл-заготовка має містити майже робоче рішення тестів, але з текстом «Hello, World!», заміненим на «Goodbye, Mars!». Підказка: можна просто скопіювати й трохи змінити приклад рішення.
Коли роботу над вправою завершено, додайте своє імʼя користувача GitHub до масиву "authors" у файлі .meta/config.json вправи.
Так ми коректно зазначимо, хто створив вправу.
Щоб перевірити, що вправу налаштовано правильно, можна скористатися вбудованою функцією лінтингу інструмента configlet.
Спочатку потрібно завантажити інструмент configlet; для цього ми створили два скрипти:
bin/fetch-configlet: запускаємо, якщо використовується *nix або macOSbin/fetch-configlet.ps1: запускаємо, якщо використовується WindowsЗапуск одного з цих скриптів із кореневого каталогу репозиторію треку завантажить бінарний файл bin/configlet або bin/configlet.exe.
Після цього можна перевірити правильність вправи, запустивши bin/configlet lint.
Цілком імовірно, що configlet повідомить про таку помилку:
The `tags` array is empty:
/path/to/track/config.json
Цю помилку буде виправлено на кроці Підготовка до запуску, тож можна або:
Робочий процес configlet автоматично запускає configlet lint щоразу, коли щось потрапляє в main або в pull request.