Um repositório de track do Exercism tem muitos arquivos JSON, incluindo:
config.json do track..meta/config.json e um links.json..meta/config.json.Esses arquivos ficam mais legíveis quando têm uma formatação consistente em todo o Exercism, e por isso o configlet tem um comando fmt para reescrever os arquivos JSON de um track em uma forma canônica.
O comando fmt formata os seguintes arquivos:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonO comando fmt formata os arquivos 'meta/config.json' dos exercícios.
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
Um configlet fmt sem mais nada não faz nenhuma alteração no track e verifica a formatação do arquivo .meta/config.json de cada Exercício de Conceito e Exercício de Prática, além do arquivo config.json do track.
Para imprimir uma lista de caminhos para os quais ainda não existe um arquivo .meta/config.json de exercício formatado (encerrando com um código de saída diferente de zero se pelo menos um exercício não tiver um arquivo de configuração formatado):
configlet fmt
Para receber um prompt perguntando se você quer gravar os arquivos de configuração formatados, adicione a opção --update (ou -u na forma curta):
configlet fmt --update
Para gravar os arquivos de configuração formatados sem interação, adicione a opção --yes (ou -y na forma curta):
configlet fmt --update --yes
Para operar em um único exercício, use a opção --exercise (ou -e na forma curta).
Por exemplo, para gravar sem interação o arquivo de configuração formatado do exercício prime-factors:
configlet fmt -uy -e prime-factors
Ao gravar arquivos JSON, o configlet fmt faz o seguinte:
Grava os pares chave/valor na ordem canônica.
Usa dois espaços para a indentação.
Usa uma linha separada para cada item de um array JSON e para cada chave de um objeto JSON.
Remove os pares chave/valor das chaves que são opcionais e têm valores vazios.
Por exemplo, "source": "" é removido.
Remove "test_runner": true dos arquivos de configuração de Exercícios de Prática.
Essa é uma chave opcional: a especificação diz que uma chave test_runner omitida implica o valor true.
Quando um objeto JSON tem mais de um par chave/valor com o mesmo nome de chave, mantém apenas o último.
A ordem canônica das chaves de um arquivo .meta/config.json de exercício é:
- 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]
em que os colchetes indicam que a chave entre eles é opcional.
Observe que o configlet fmt só opera em exercícios que existem no arquivo config.json do track.
Portanto, se você está implementando um novo exercício em um track e quer formatar o arquivo .meta/config.json dele, adicione o exercício ao arquivo config.json do track primeiro.
Se o exercício ainda não estiver pronto para quem usa o site, defina o valor de status dele como wip.
O código de saída é 0 quando todos os arquivos de configuração encontrados estão formatados no momento em que o configlet encerra, e 1 caso contrário.