このプロジェクトについて

dotfiles-webは、dotgibson dotfilesシステムの公開ショーケースおよびドキュメントハブです。READMEでは、11個のリポジトリからなる3層(Core → OS-native → Role)のターミナル環境として説明されています。このサイトはシステムのドキュメント化を目的としており、マシン設定を行うものではないため、3つの層のいずれにも含まれません。サイトはAstroで構築され、Tokyo Nightテーマが適用され、GitHub Pagesにデプロイされています。 構造 READMEには5つの主要ルートが記載されています。ヒーローセクション、3層モデル、リポジトリマップ、インストール手順を含むランディングページ。プラットフォーム別のインストールガイドがあるGetting Startedページ。層モデル、subtreeの根拠、ローダー、詳細解説をカバーするアーキテクチャページ。コンセプト、ガイド、リファレンス、およびリポジトリごとの生成ページを含むドキュメントハブ。そして、各リポジトリのCHANGELOG.mdを反映したチェンジログです。 データ駆動型コンテンツ 本サイトはデータ駆動型であり、その大部分がソースから派生しています。ショーケースカード、リポジトリごとのドキュメントページ、「by the numbers」ストリップ、およびチェンジログは、src/data配下のファイルと兄弟リポジトリから生成されるため、ドキュメントがコードの内容から乖離することはありません。編集可能な入力には、src/data/site.ts(サイト名、所有者、ナビゲーション、GitHubリンク)、src/data/repos.ts(リポジトリマップ、リポジトリごとの説明文およびステータス)、src/data/install.ts(プラットフォーム別のインストール手順)、およびsrc/content/docs配下のMarkdownページが含まれます。 scripts/配下の4つのコレクターが、兄弟リポジトリから生成データを抽出します。collect-metrics.mjsは11個のdotfilesリポジトリからgenerated.jsonを生成し、collect-snippets.mjsは6つのリポジトリにわたる8つの厳選されたファイルからsnippets.jsonを生成します。collect-corpus.mjsはhtpxからcorpus.jsonを、collect-coverage.mjsはdotfiles-Defenseからcoverage.jsonを生成します。 厳格性とプロバナンス(由来)ガード npm run dataはパブリッシュパスとして定義されており、厳格なチェックが行われます。リポジトリの欠落、兄弟リポジトリがフィーチャーブランチにある場合、またはコレクターが読み取るファイルに未コミットの編集がある場合は、実行が失敗します。READMEによると、このチェックは、かつてdotfiles-coreがフィーチャーブランチでチェックアウトされていた際に、Coreのmainに存在しないチェンジログエントリが公開されたために導入されました。個別のコレクターおよびnpm run data:lenientは、探索的な実行のために寛容な設定となっています。READMEでは、無害なケース(ソースリポジトリが不在だがコミット済みファイルは未変更でexit 0となる場合)と、汚染されたデータを書き込むケース(フリートは存在するがクリーンではなく、generatedFrom.clean: falseとスタンプされる場合)を区別しています。 2つのガードがこのプロバナンス判定を読み取ります。npm installまたはnpm run hooks:installによってインストールされるpre-commitフック(1台のマシンでgenerated.jsonとsnippets.jsonをカバー)と、data-freshness.ymlによるcommitted-data-provenance CIジョブ(すべてのPRで実行)です。フックはcore.hooksPathが設定されている場合に警告付きでスキップされ、DOTFILES_ALLOW_DIRTY_DATA=1または--no-verifyでバイパス可能ですが、CIジョブではバイパスできません。 自動化 fleet-sync.ymlは4つのコレクターを毎週実行し、出力に差異がある場合にPRを作成します。data-freshness.ymlは、4つのコミット済みファイルのいずれかがソースと一致しなくなった場合、およびgenerated.jsonのCoreバージョンが最新のdotfiles-coreリリースより古い場合にCIを失敗させます。mainへのプッシュはdeploy.yml(Astroビルド → GitHub Pages)をトリガーします。また、ソースリポジトリは、docs/WEBHOOK-SETUP.mdに記載されている短寿命のGitHub Appトークンによる認証を通じて、repository_dispatch経由でリビルドをリクエストできます。 開発 前提条件はnpmを含むNode.jsであり、プロジェクトは標準的なAstroプロジェクトです。コマンドには、npm run dev(ローカル開発サーバー)、npm run build(dist/へのプロダクションビルド)、npm run preview、およびnpm run check(Astroの型およびコンテンツコレクションのチェック)が含まれます。貢献ガイドでは、ソースオブトゥルース(信頼できる唯一の情報源)であるリポジトリを正典として扱い、コンテンツをページにハードコードせずデータファイルに保持すること、およびプッシュ前にnpm run checkとnpm run buildをパスさせることが求められています。ライセンスはMIT Licenseです。