Il repository di un track di Exercism contiene molti file JSON, tra cui:
config.json del track..meta/config.json e un file links.json..meta/config.json.Questi file sono più leggibili se hanno una formattazione coerente in tutto Exercism, perciò configlet ha un comando fmt che riscrive i file JSON di un track in una forma canonica.
Il comando fmt formatta i seguenti file:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonIl comando fmt formatta i file «meta/config.json» degli esercizi.
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
Un configlet fmt senza altre opzioni non modifica il track: controlla la formattazione del file .meta/config.json di ogni esercizio di concetto e di pratica e del file config.json del track.
Per stampare un elenco dei percorsi per cui non esiste ancora un file .meta/config.json di esercizio formattato (uscendo con un codice di uscita diverso da zero se almeno un esercizio non ha un file di configurazione formattato):
configlet fmt
Per ricevere una richiesta di conferma prima di scrivere i file di configurazione formattati, aggiungi l'opzione --update (o -u in forma breve):
configlet fmt --update
Per scrivere i file di configurazione formattati senza interazione, aggiungi l'opzione --yes (o -y in forma breve):
configlet fmt --update --yes
Per operare su un singolo esercizio, usa l'opzione --exercise (o -e in forma breve).
Per esempio, per scrivere senza interazione il file di configurazione formattato dell'esercizio prime-factors:
configlet fmt -uy -e prime-factors
Quando scrive i file JSON, configlet fmt:
Scrive le coppie chiave/valore nell'ordine canonico.
Usa due spazi per l'indentazione.
Usa una riga separata per ogni elemento di un array JSON e per ogni chiave di un oggetto JSON.
Rimuove le coppie chiave/valore delle chiavi opzionali che hanno un valore vuoto.
Per esempio, "source": "" viene rimossa.
Rimuove "test_runner": true dai file di configurazione degli esercizi di pratica.
Questa è una chiave opzionale: le specifiche dicono che una chiave test_runner omessa implica il valore true.
Quando un oggetto JSON ha più di una coppia chiave/valore con lo stesso nome di chiave, conserva solo l'ultima.
L'ordine canonico delle chiavi per il file .meta/config.json di un esercizio è:
- 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]
dove le parentesi quadre indicano che la chiave racchiusa è opzionale.
Nota che configlet fmt opera solo sugli esercizi presenti nel file config.json a livello di track.
Quindi, se stai implementando un nuovo esercizio su un track e vuoi formattarne il file .meta/config.json, aggiungi prima l'esercizio al file config.json a livello di track.
Se l'esercizio non è ancora pronto per gli utenti, imposta il suo valore status su wip.
Il codice di uscita è 0 quando, all'uscita di configlet, ogni file di configurazione esaminato è formattato, e 1 in caso contrario.