Exercism의 모든 요소에 대한 표준 명세
configlet은 트랙 관리자가 트랙을 유지 관리하도록 돕는 도구예요.
configlet의 주된 기능은 _린트_예요. 트랙의 (설정) 파일이 문법적으로나 의미적으로 올바르게 구성되어 있는지 검사하는 거예요. 설정이 잘못된 트랙은 제대로 동기화되지 않거나, 웹사이트에서 이상하게 보이거나, 사용자 경험이 좋지 않을 수 있어요. 그래서 configlet의 검사는 Exercism의 무결성을 유지하는 데 중요한 역할을 해요. 린트 검사기가 확인하는 규칙의 전체 목록은 여기에서 볼 수 있어요.
configlet의 두 번째 기능은 문서를 생성하는 거예요. configlet이 생성할 수 있는 문서에는 두 가지 종류가 있어요:
introduction.md 파일.instructions.md 파일.이 문서들이 어떻게 생성되는지는 여기에서 확인할 수 있어요.
configlet의 세 번째 기능은 실습 문제를 위한 다양한 데이터를 제공하는 거예요.
Exercism 트랙의 실습 문제는 흔히 exercism/problem-specifications 저장소의 명세를 바탕으로 만들어져요.
Exercism은 모든 연습 문제가 특정 파일(예: .docs/instructions.md)의 사본을 각자 가지고 있을 것을 의도적으로 요구해요. 그 문제가 problem-specifications에도 있어도 마찬가지예요.
그래서 configlet에는 sync 명령이 있어요. 이 명령은 트랙에 있는 실습 문제가 업스트림 소스와 동기화되어 있는지 확인하고, 업데이트가 있으면 갱신해 줄 수 있어요.
problem-specifications에서 갱신할 수 있는 데이터에는 문서, 메타데이터, 테스트 세 가지 종류가 있어요. 또 트랙 수준의 config.json 파일에서 채울 수 있는 데이터가 한 가지 있어요. 바로 연습 문제 설정 파일의 파일 경로예요.
참고로, configlet 릴리스 4.0.0-alpha.34 이하에서는 sync 명령이 테스트에만 동작했어요.
특정 실습 문제에 어떤 테스트가 구현되어 있는지 관리하려면, 그 문제에 .meta/tests.toml 파일이 반드시 포함되어 있어야 해요.
이 파일의 테스트는 UUID로 식별되고, 각 테스트에는 그 문제에서 구현되었는지를 나타내는 불리언 값이 있어요.
연습 문제의 여러 부분을 어떻게 동기화하는지에 대한 자세한 내용은 여기에서 확인할 수 있어요.
Configlet을 사용하면 새로운 접근법, 아티클, 연습 문제를 위한 파일을 빠르게 만들 수 있어요.
이 파일들을 어떻게 만드는지에 대해서는 여기에서 더 알아볼 수 있어요.
연습 문제, 트랙, 개념은 UUID로 식별돼요.
UUID를 생성하는 방법은 여기에서 확인할 수 있어요.
Configlet에는 트랙 저장소에 있는 JSON 파일의 포맷을 일관되게 맞추도록 도와주는 fmt 명령이 있어요.
fmt 명령은 다음 파일들의 포맷을 맞춰요:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.json포맷 명령에 대해 더 알아보려면 여기를 봐요.
configlet은 독립 실행형 바이너리로 배포돼요. 각 트랙에는 bin/fetch-configlet 스크립트가 있어야 하고, bin/fetch-configlet.ps1 스크립트도 있을 수 있어요. 첫 번째는 bash 스크립트이고, 두 번째는 PowerShell 스크립트예요.
이 스크립트 중 하나를 실행하면 최신 버전의 configlet이 bin 디렉터리에 내려받아져요. 그다음에는 각각 bin/configlet 또는 bin/configlet.exe를 실행해서 configlet을 사용할 수 있어요.
모든 트랙은 CI 설정에 configlet 린트 기능을 통합해야 해요. 가장 쉬운 방법은 configlet CI GitHub 액션을 사용하는 거예요.