O primeiro exercício de cada trilha é um exercício "Hello, World!" bem simples.
O objetivo deste exercício é verificar rapidamente se tudo está conectado corretamente. Isso confirma que a pessoa instalou o ambiente de programação corretamente, que sabe como rodar os testes e que consegue fazê-los passar. Além disso, no caso do cliente de linha de comando (CLI) do Exercism, também garante que a CLI está instalada e configurada corretamente e que o site entrega os arquivos certos para o exercício, sem enviar artefatos desnecessários. Por último, garante que a pessoa está familiarizada com o ciclo de baixar um exercício usando a CLI, resolver um problema no seu ambiente de desenvolvimento local e enviar a solução de volta para o site.
Ou seja, ainda não se trata realmente de aprender algo sobre a linguagem em si. A meta aqui é algo o mais simples possível.
Provavelmente esta também será a parte mais difícil de configurar corretamente o repositório da trilha, porque implementar um exercício envolve muitas partes que precisam se encaixar.
O exercício "Hello, World!" segue algumas regras especiais:
prerequisites
practices
O exercício "Hello, World!" (e, na verdade, todos os exercícios do Exercism) exige um conjunto específico de arquivos:
Antes de criar o exercício "Hello, World!", você precisa tomar algumas decisões sobre os nomes e os caminhos dos arquivos específicos da trilha (suíte de testes, implementação stub, implementação de exemplo e quaisquer arquivos adicionais).
A regra geral é usar nomes idiomáticos para a linguagem.
Quando não houver preferências fortes, prefira estruturas de diretório menos profundas.
A implementação de exemplo precisa ser identificável pelo script de CI, então é aconselhável escolher um nome base genérico que todos os exercícios possam usar, por exemplo example, sample ou reference-solution.
Depois de escolher os caminhos de arquivo específicos da trilha, configure-os na chave files do arquivo config.json da raiz.
A chave files serve como modelo para todos os exercícios, o que permite que qualquer ferramenta (algumas das quais usaremos já já) saiba onde procurar os arquivos.
Você pode usar vários placeholders para configurar facilmente o slug do exercício (hello-world, neste caso).
Se sua trilha usa PascalCase nos nomes dos arquivos, a chave files pode ficar assim:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
Os arquivos de exemplo devem ficar dentro do diretório .meta.
Para mais informações, consulte a documentação da chave files.
Depois de especificar os modelos de caminho dos arquivos, você pode gerar rapidamente os arquivos do exercício "Hello, World!" rodando os comandos a seguir a partir do diretório raiz da trilha:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Para que o site liste você como autor do exercício, siga estes passos:
No arquivo .meta/config.json do exercício:
authors
Para que isso funcione, você precisa vincular sua conta do Exercism ao GitHub. Você pode fazer isso no site, na seção Integrações da página de Configurações.
Autores de exercícios também recebem reputação
Repositórios de trilha mais recentes podem usar o script bin/add-practice-exercise (código-fonte) para adicionar novos exercícios:
bin/add-exercise -a <github_username> two-fer
Se você estiver trabalhando em um repositório de trilha que não tem esse arquivo, fique à vontade para copiá-lo para o seu repositório usando o link do código-fonte acima.
Depois que os arquivos gerados forem criados, você vai precisar:
Uma parte essencial de adicionar um exercício é escrever os testes. De modo geral, há duas opções ao implementar um dos exercícios acima:
canonical-data.json do exercício
https://exercism.org/exercises/hello-world para ver quais trilhas já implementaram um determinado exercício).Para o exercício "Hello, World!", haverá apenas um caso de teste, então qualquer uma das opções serve.
O arquivo de implementação de exemplo deve conter o código necessário para resolver os testes.
O arquivo stub deve ter uma solução quase funcional para os testes, mas com o texto "Hello, World!" substituído por "Goodbye, Mars!". Dica: é só copiar, colar e modificar a solução de exemplo.
Quando terminar o exercício, adicione seu nome de usuário do GitHub ao array "authors" no arquivo .meta/config.json do exercício.
Assim garantimos que você receba o crédito por ter criado o exercício.
Para verificar se o exercício está configurado corretamente, você pode usar a funcionalidade de lint integrada da ferramenta configlet.
O primeiro passo é baixar a ferramenta configlet, para a qual criamos dois scripts:
bin/fetch-configlet: rode este quando estiver usando *nix ou macOSbin/fetch-configlet.ps1: rode este quando estiver usando WindowsRodar um desses scripts a partir do diretório raiz do repositório da trilha baixa o binário bin/configlet ou bin/configlet.exe, respectivamente.
Depois, você pode verificar se o exercício está correto rodando bin/configlet lint.
É provável que o configlet reporte o seguinte erro:
The `tags` array is empty:
/path/to/track/config.json
Este erro será corrigido na etapa Preparação para o lançamento, então você pode:
O fluxo de trabalho do configlet roda configlet lint automaticamente sempre que algo é enviado para a main ou para um pull request.