O primeiro exercício de cada percurso é um exercício muito simples de "Hello, World!".
O objetivo deste exercício é garantir rapidamente que está tudo ligado como deve ser. Isto confirma que o utilizador tem o ambiente de programação instalado corretamente, que sabe correr os testes e que consegue fazê-los passar. Além disso, no caso do cliente de linha de comandos do Exercism (CLI), garante também que o CLI está instalado e configurado corretamente e que o site entrega os ficheiros certos do exercício sem entregar artefactos desnecessários. Por último, garante que o utilizador está familiarizado com o ciclo de descarregar um exercício com o CLI, resolver um problema no seu ambiente de desenvolvimento local e submeter a solução de volta ao site.
Por outras palavras, ainda não se trata propriamente de aprender nada sobre a linguagem em si. O objetivo é algo extremamente simples.
Provavelmente, esta será também a parte mais difícil de configurar corretamente o repositório do percurso, uma vez que implementar um exercício envolve muitas peças em jogo.
O exercício "Hello, World!" tem 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 ficheiros:
Antes de podermos criar o exercício "Hello, World!", tens de tomar algumas decisões sobre os nomes e os caminhos dos ficheiros específicos do percurso (conjunto de testes, implementação stub, implementação de exemplo e eventuais ficheiros adicionais).
A regra geral é usar nomes idiomáticos para a linguagem.
Quando não houver preferências fortes, dá preferência a estruturas de diretórios menos profundas.
A implementação de exemplo tem de ser identificável pelo script de CI, por isso é aconselhável escolher um nome base genérico que todos os exercícios possam usar, por exemplo example, sample ou reference-solution.
Depois de escolheres os caminhos dos ficheiros específicos do percurso, deves configurá-los na chave files do ficheiro config.json da raiz.
A chave files serve de modelo para todos os exercícios, o que permite que qualquer ferramenta (algumas das quais vamos usar já a seguir) saiba onde procurar os ficheiros.
Podes usar vários placeholders para configurar facilmente o slug do exercício (hello-world, neste caso).
Se o teu percurso usa PascalCase nos nomes dos ficheiros, a chave files pode ter este aspeto:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
O(s) ficheiro(s) de exemplo devem ser guardados dentro do diretório .meta.
Para mais informações, consulta a documentação da chave files.
Depois de especificares os modelos de caminhos de ficheiros, podes criar rapidamente os ficheiros do exercício "Hello, World!" executando os seguintes comandos a partir do diretório raiz do percurso:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Para que o site te apresente como autor do exercício, segue estes passos:
No ficheiro .meta/config.json do exercício:
authors
Para isto funcionar, tens de associar a tua conta do Exercism ao GitHub. Podes fazê-lo no site, na secção Integrações da página Definições.
Os autores dos exercícios também recebem reputação
Os repositórios de percurso 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 estás a trabalhar num repositório de percurso que não tem este ficheiro, copia-o à vontade para o teu repositório através da ligação para o código-fonte acima.
Depois de criados os ficheiros base, vais ter de:
Uma parte essencial de adicionar um exercício é adicionar testes. Grosso modo, há duas opções ao implementar um dos exercícios acima:
canonical-data.json do exercício
https://exercism.org/exercises/hello-world para veres uma visão geral de que percursos já implementaram um determinado exercício).Para o exercício "Hello, World!", só haverá um caso de teste, por isso qualquer das opções serve.
O ficheiro da implementação de exemplo deve conter o código necessário para resolver os testes.
O ficheiro stub deve ter uma solução quase funcional para os testes, mas com o texto "Hello, World!" substituído por "Goodbye, Mars!". Dica: basta copiar, colar e modificar a solução de exemplo.
Quando terminares o exercício, adiciona o teu nome de utilizador do GitHub ao array "authors" no ficheiro .meta/config.json do exercício.
Assim garantimos que recebes o devido crédito por teres criado o exercício.
Para verificares se o exercício está configurado corretamente, podes usar a funcionalidade de linting integrada da ferramenta configlet.
O primeiro passo é descarregar a ferramenta configlet, para a qual criámos dois scripts:
bin/fetch-configlet: executa este se usares *nix ou macOSbin/fetch-configlet.ps1: executa este se usares WindowsExecutar um destes scripts a partir do diretório raiz do repositório do percurso descarrega o binário bin/configlet ou bin/configlet.exe, respetivamente.
Podes depois verificar se o exercício está correto executando 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 no passo Preparar o lançamento, por isso, tens duas opções:
O fluxo de trabalho do configlet executa automaticamente o configlet lint sempre que algo é enviado para a main ou para um pull request.