Configlet

Az Exercism minden elemének kanonikus specifikációi


A configlet egy eszköz, amely segít a kurzuskarbantartóknak a kurzusuk karbantartásában.

Lintelés

A configlet elsődleges funkciója a lintelés: annak ellenőrzése, hogy egy kurzus (konfigurációs) fájljai megfelelően strukturáltak-e, szintaktikailag és szemantikailag egyaránt. A hibásan beállított kurzusok nem feltétlenül szinkronizálódnak megfelelően, hibásan jelenhetnek meg a weboldalon, vagy szuboptimális felhasználói élményt nyújthatnak, ezért a configlet védelmei fontos szerepet játszanak az Exercism integritásának megőrzésében. A linter által ellenőrzött szabályok teljes listája itt található.

Dokumentumok generálása

A configlet másodlagos funkciója a dokumentumok generálása. Kétféle dokumentumot tud generálni a configlet:

  1. Egy tanulófeladat introduction.md fájlját.
  2. Egy gyakorlófeladat instructions.md fájlját.

Hogy ezek a dokumentumok hogyan generálódnak, itt található.

Feladatadatok szinkronizálása a problem-specifications repóval

A configlet harmadlagos funkciója, hogy különféle adatokat biztosítson a gyakorlófeladatokhoz.

Egy gyakorlófeladat az Exercism egyik kurzusán gyakran egy specifikáció alapján valósul meg a exercism/problem-specifications repóban.

Az Exercism szándékosan megköveteli, hogy minden feladatnak saját másolata legyen bizonyos fájlokból (például a .docs/instructions.md), még akkor is, ha az a feladat létezik a problem-specifications-ben. Ezért a configlet rendelkezik egy sync paranccsal, amely ellenőrizni tudja, hogy egy kurzus ilyen gyakorlófeladatai szinkronban vannak-e a felsőbb forrással, és frissítheti őket, amikor frissítések érhetők el.

Háromféle adat frissíthető a problem-specifications-ből: dokumentáció, metaadatok és tesztek. Egyfajta adat tölthető fel a kurzus szintű config.json fájlból is: a feladatok konfigurációs fájljaiban szereplő fájlútvonalak.

Ne feledd, hogy a configlet 4.0.0-alpha.34 és korábbi kiadásaiban a sync parancs csak a tesztekkel működött.

Ahhoz, hogy nyomon kövesd, egy adott gyakorlófeladat mely tesztjei vannak megvalósítva, a feladatnak tartalmaznia kell egy .meta/tests.toml fájlt. Az ebben a fájlban szereplő teszteket a UUID-jük azonosítja, és minden teszthez tartozik egy Boolean-érték, amely jelzi, hogy megvalósította-e az a feladat.

A feladat különböző részeinek szinkronizálásáról itt találod a részleteket.

Fájlok létrehozása

A configlet segítségével gyorsan előkészíthetsz fájlokat egy új megközelítéshez, cikkhez vagy feladathoz.

Arról, hogy hogyan hozd létre ezeket a fájlokat, itt tudhatsz meg többet.

UUID-k generálása

A feladatokat, kurzusokat és fogalmakat egy UUID azonosítja.

Hogyan generálhatsz UUID-kat, itt találod.

Formázás

A configlet rendelkezik egy fmt paranccsal, amely segít a kurzus repójában lévő JSON-fájlok egységes formázásában. A fmt parancs a következő fájlokat formázza:

  • config.json
  • exercises/{concept,practice}/*/.approaches/config.json
  • exercises/{concept,practice}/*/.articles/config.json
  • exercises/{concept,practice}/*/.meta/config.json

A format parancsról itt tudhatsz meg többet.

Telepítés

A configlet önálló bináris fájlként érhető el. Minden kurzushoz tartoznia kell egy bin/fetch-configlet szkriptnek, és lehet hozzá egy bin/fetch-configlet.ps1 szkript is. Az első egy bash szkript, a második egy PowerShell szkript.

Ezen szkriptek egyikének futtatásával a configlet legújabb verziója töltődik le a bin könyvtárba. Ezután a configletet a bin/configlet, illetve bin/configlet.exe futtatásával használhatod.

CI

Minden kurzusnak integrálnia kell a configlet lintelési funkcióját a CI-beállításába. Ennek legegyszerűbb módja a configlet CI GitHub action használata.