Le specifiche canoniche di tutto ciò che c'è su Exercism
configlet è uno strumento che aiuta i manutentori di una traccia nella manutenzione della loro traccia.
La funzione principale di configlet è fare linting: verificare che i file (di configurazione) di una traccia siano strutturati correttamente, sia sintatticamente che semanticamente. Le tracce configurate male potrebbero non sincronizzarsi correttamente, apparire sbagliate sul sito o offrire un'esperienza utente non ottimale: per questo i controlli di configlet svolgono un ruolo importante nel preservare l'integrità di Exercism. L'elenco completo delle regole controllate dal linter è disponibile qui.
La funzione secondaria di configlet è generare documenti. I tipi di documenti che configlet può generare sono due:
introduction.md di un esercizio concettuale.instructions.md di un esercizio pratico.Come vengono generati questi documenti è descritto qui.
La funzione terziaria di configlet è fornire vari dati per gli esercizi pratici.
Spesso un esercizio pratico di una traccia Exercism viene realizzato a partire da una specifica presente nel repository exercism/problem-specifications.
Exercism richiede di proposito che ogni esercizio abbia la propria copia di alcuni file (come .docs/instructions.md), anche quando quell'esercizio esiste già in problem-specifications.
Per questo configlet ha un comando sync, che può verificare che tali esercizi pratici di una traccia siano sincronizzati con quella fonte a monte e può aggiornarli quando sono disponibili nuovi aggiornamenti.
Ci sono tre tipi di dati che possono essere aggiornati da problem-specifications: documentazione, metadati e test.
C'è anche un tipo di dati che può essere popolato dal file config.json a livello di traccia: i percorsi dei file nei file di configurazione degli esercizi.
Tieni presente che nelle release di configlet 4.0.0-alpha.34 e precedenti, il comando sync agiva solo sui test.
Per tenere traccia di quali test sono implementati per un determinato esercizio pratico, l'esercizio deve contenere un file .meta/tests.toml.
I test in questo file sono identificati dal loro UUID e ogni test ha un valore booleano che indica se è implementato da quell'esercizio.
I dettagli su come sincronizzare le diverse parti di un esercizio sono qui.
Configlet può essere usato per creare rapidamente lo scheletro dei file per un nuovo approccio, un nuovo articolo o un nuovo esercizio.
Per saperne di più su come creare questi file, vai qui.
Esercizi, tracce e concetti sono identificati da un UUID.
Come generare gli UUID è descritto qui.
Configlet ha un comando fmt che aiuta a formattare in modo coerente i file JSON nel repository della traccia.
Il comando fmt formatta i seguenti file:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonPer saperne di più sul comando di formattazione, vai qui.
configlet viene distribuito come binario autonomo. Ogni traccia dovrebbe avere uno script bin/fetch-configlet e potrebbe avere anche uno script bin/fetch-configlet.ps1. Il primo è uno script bash, il secondo è uno script PowerShell.
Eseguire uno di questi script scarica la versione più recente di configlet nella cartella bin. Poi puoi usare configlet eseguendo rispettivamente bin/configlet o bin/configlet.exe.
Tutte le tracce dovrebbero integrare la funzionalità di lint di configlet nella loro configurazione CI. Il modo più semplice è usare la GitHub action configlet CI.