Configlet

As especificações canônicas de tudo no Exercism


configlet é uma ferramenta que ajuda quem mantém uma trilha na manutenção dela.

Linting

A principal função do configlet é fazer linting: verificar se os arquivos (de configuração) de uma trilha estão estruturados corretamente, tanto sintática quanto semanticamente. Trilhas mal configuradas podem não sincronizar corretamente, podem parecer erradas no site ou oferecer uma experiência ruim para quem usa. Por isso, as verificações do configlet têm um papel importante na manutenção da integridade do Exercism. A lista completa das regras verificadas pelo linter está aqui.

Gerando documentos

A função secundária do configlet é gerar documentos. Existem dois tipos de documentos que o configlet pode gerar:

  1. O arquivo introduction.md de um Exercício de Conceito.
  2. O arquivo instructions.md de um Exercício de Prática.

Você pode ver como esses documentos são gerados aqui.

Sincronizando dados de exercícios com o repositório problem-specifications

A terceira função do configlet é fornecer diversos dados para exercícios de prática.

Um Exercício de Prática de uma trilha do Exercism costuma ser implementado a partir de uma especificação no repositório exercism/problem-specifications.

O Exercism exige, de propósito, que cada exercício tenha sua própria cópia de certos arquivos (como .docs/instructions.md), mesmo quando esse exercício existe em problem-specifications. Por isso o configlet tem um comando sync, que pode verificar se esses Exercícios de Prática de uma trilha estão em sincronia com essa fonte upstream e pode atualizá-los quando houver atualizações disponíveis.

Há três tipos de dados que podem ser atualizados a partir de problem-specifications: documentação, metadados e testes. Há também um tipo de dado que pode ser preenchido a partir do arquivo config.json da trilha: os caminhos de arquivo nos arquivos de configuração dos exercícios.

Observação: nas versões 4.0.0-alpha.34 e anteriores do configlet, o comando sync atuava apenas sobre os testes.

Para acompanhar quais testes estão implementados em um exercício de prática específico, o exercício deve conter um arquivo .meta/tests.toml. Os testes nesse arquivo são identificados pelo UUID, e cada teste tem um valor Boolean que indica se ele está implementado naquele exercício.

Você encontra os detalhes sobre como sincronizar as diferentes partes de um exercício aqui.

Criar arquivos

O configlet pode ser usado para criar rapidamente a estrutura de arquivos de uma nova abordagem, um artigo ou um exercício.

Saiba mais sobre como criar esses arquivos aqui.

Gerando UUIDs

Exercícios, trilhas e conceitos são identificados por um UUID.

Você pode ver como gerar UUIDs aqui.

Formatação

O configlet tem um comando fmt que ajuda a manter uma formatação consistente dos arquivos JSON no repositório da trilha. O comando fmt formata os seguintes arquivos:

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

Saiba mais sobre o comando de formatação aqui.

Instalação

O configlet é distribuído como um binário autônomo. Cada trilha deve ter um script bin/fetch-configlet e pode ter também um script bin/fetch-configlet.ps1. O primeiro é um script bash, e o segundo é um script PowerShell.

Rodar um desses scripts baixa a versão mais recente do configlet para o diretório bin. Depois, você pode usar o configlet rodando bin/configlet ou bin/configlet.exe, respectivamente.

CI

Todas as trilhas devem integrar a funcionalidade de lint do configlet na sua configuração de CI. A forma mais fácil de fazer isso é usar a GitHub Action de CI do configlet.