Exercismにあるすべてのものの正式な仕様
configletは、トラックのメンテナーがトラックの保守を行うのを助けるツールです。
configletの主な機能は_リント_です。これは、トラックの(設定)ファイルが、構文的にも意味的にも正しく構造化されているかをチェックするものです。 設定が誤っているトラックは、正しく同期できなかったり、ウェブサイトでの表示がおかしくなったり、ユーザー体験を損なったりすることがあります。そのため、configletのチェックはExercismの健全性を保つ上で重要な役割を果たします。 リンターがチェックするルールの一覧はこちらにあります。
configletの2つ目の機能は、ドキュメントの生成です。configletが生成できるドキュメントには、次の2種類があります。
introduction.mdファイル。instructions.mdファイル。これらのドキュメントがどのように生成されるかはこちらにあります。
configletの3つ目の機能は、プラクティス演習のためのさまざまなデータを提供することです。
Exercismのトラックにあるプラクティス演習は、多くの場合、exercism/problem-specificationsリポジトリの仕様をもとに実装されます。
Exercismでは、たとえその演習がproblem-specificationsに存在していても、すべての演習が特定のファイル(.docs/instructions.mdなど)のコピーを自分で持つことを、意図的に求めています。
そのため、configletにはsyncコマンドがあります。これは、トラック上のこうしたプラクティス演習が上流のソースと同期しているかを確認し、更新があればそれらを更新できます。
problem-specificationsから更新できるデータには、ドキュメント、メタデータ、テストの3種類があります。
また、トラックレベルのconfig.jsonファイルから設定できるデータが1種類あります。演習の設定ファイル内のファイルパスです。
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 actionを使うことです。