Ein Track-Repository von Exercism enthält viele JSON-Dateien, darunter:
config.json-Datei des Tracks..meta/config.json- und eine links.json-Datei..meta/config.json-Datei.Diese Dateien sind leichter zu lesen, wenn sie in ganz Exercism einheitlich formatiert sind. Deshalb hat configlet einen fmt-Befehl, mit dem du die JSON-Dateien eines Tracks in eine kanonische Form bringst.
Der fmt-Befehl formatiert die folgenden Dateien:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonDer fmt-Befehl formatiert die „meta/config.json“-Dateien der Übungen.
configlet [global-options] fmt [command-options]
Global options:
-h, --help Show this help message and exit
--version Show this tool's version information and exit
-t, --track-dir <dir> Specify a track directory to use instead of the current directory
-v, --verbosity <verbosity> The verbosity of output. Allowed values: q[uiet], n[ormal], d[etailed]
Options for fmt:
-e, --exercise <slug> Only operate on this exercise
-u, --update Prompt to write formatted files
-y, --yes Auto-confirm the prompt from --update
Ein einfaches configlet fmt nimmt keine Änderungen am Track vor, sondern prüft die Formatierung der .meta/config.json-Datei jeder Konzept-Übung und Praxis-Übung sowie der config.json-Datei des Tracks.
So gibst du eine Liste der Pfade aus, für die es noch keine formatierte .meta/config.json-Datei einer Übung gibt (mit einem Exit-Code ungleich null, wenn mindestens einer Übung eine formatierte Konfigurationsdatei fehlt):
configlet fmt
Wenn du aufgefordert werden möchtest, formatierte Konfigurationsdateien zu schreiben, füge die Option --update hinzu (kurz -u):
configlet fmt --update
Wenn du die formatierten Konfigurationsdateien ohne Rückfrage schreiben möchtest, füge die Option --yes hinzu (kurz -y):
configlet fmt --update --yes
Um nur eine einzelne Übung zu bearbeiten, verwende die Option --exercise (kurz -e).
Um zum Beispiel die formatierte Konfigurationsdatei der Übung prime-factors ohne Rückfrage zu schreiben:
configlet fmt -uy -e prime-factors
Beim Schreiben von JSON-Dateien geht configlet fmt so vor:
Es schreibt die Schlüssel-Wert-Paare in der kanonischen Reihenfolge.
Es verwendet zwei Leerzeichen zur Einrückung.
Es verwendet eine eigene Zeile für jeden Eintrag in einem JSON-Array und jeden Schlüssel in einem JSON-Objekt.
Es entfernt Schlüssel-Wert-Paare für optionale Schlüssel mit leeren Werten.
Zum Beispiel wird "source": "" entfernt.
Es entfernt "test_runner": true aus den Konfigurationsdateien von Praxis-Übungen.
Das ist ein optionaler Schlüssel: Die Spezifikation besagt, dass ein weggelassener Schlüssel test_runner den Wert true impliziert.
Wenn ein JSON-Objekt mehr als ein Schlüssel-Wert-Paar mit demselben Schlüsselnamen hat, behält es nur das letzte.
Die kanonische Schlüsselreihenfolge für eine .meta/config.json-Datei einer Übung ist:
- authors
- [contributors]
- files
- solution
- test
- exemplar (Concept Exercises only)
- example (Practice Exercises only)
- [editor]
- [invalidator]
- [language_versions]
- [forked_from] (Concept Exercises only)
- [icon] (Concept Exercises only)
- [test_runner] (Practice Exercises only)
- blurb
- [source]
- [source_url]
- [custom]
Dabei zeigen die eckigen Klammern an, dass der eingeschlossene Schlüssel optional ist.
Beachte, dass configlet fmt nur auf Übungen wirkt, die in der config.json-Datei auf Track-Ebene vorhanden sind.
Wenn du also eine neue Übung für einen Track implementierst und ihre .meta/config.json-Datei formatieren möchtest, füge die Übung zuerst der config.json-Datei auf Track-Ebene hinzu.
Wenn die Übung noch nicht für Nutzer bestimmt ist, setze ihren status-Wert auf wip.
Der Exit-Code ist 0, wenn beim Beenden von configlet jede gefundene Konfigurationsdatei formatiert ist, und andernfalls 1.