GitHub の Wiki で子ページを一覧化する
※ やりたいことはまだ途中なんですが、キリがよくなったのでいったんまとめています
やりたいこと
GitHub で Wiki を書くと、サイドバーに積み上がっていきます。 これは増えすぎると隠れてしまうので、一覧で表示されればいいなと思います。
やったこと
Wiki はそれ自体もリポジトリを clone することが可能です。 Wiki ページの右下で URL を確認できます。
今回の場合だとこんな感じです。
https://github.com/ryuj/Unity.wiki.git
確認したところ、生成したページが .md ファイルとして存在します。 トップページは Home.md です。 なので、以下のように対応を考えます。
- Home.md 以外の .md ファイルをリンクのフォーマットで出力する
- 出力結果をリストにして Home.md へ上書きする
上記に対応したスクリプトは以下です。 これを実行すれば、Home.md に子ページの一覧を作成できます。 (Ruby は思いつくまま書ける感じが好きですが、Ruby ぽく書けているのかは未知数)
HOME_FILE = "Home.md" def main html = "" Dir.glob("*.md").each do |file| next if file == HOME_FILE base = File.basename(file, ".md") s = "* [#{base}](./#{base})\n" html << s end File.open(HOME_FILE, "w") { |io| io.puts html } end main
できていないこと
現状、スクリプトを手動で実行しなければ一覧化できません。 Wiki はブラウザ等で編集することが多いと思います。 なので、ブラウザ等で編集された際に上記スクリプトを動かして Home.md を更新する、というのがベストです。
git log で確認したところ、ブラウザからの編集もコミットログで残っているため、おそらく普通に push を検知できれば行けそうです。 未確認ですが、このあたりはおそらく webhook で対応できるのでは、と予想してます。(あとでやる、つもり、、、)