notebook

都内でWEB系エンジニアやってます。

GitHub Pagesを使っているリポジトリを洗い出す

ふとしたときに、GitHub Pagesよく使ってたなー、どのリポジトリで使っていたっけ?

となり調べてみた

Pagesの情報を取得するエンドポイントはREST APIに存在するようだったので、自分の管理しているリポジトリの中からPagesを使っているリポジトリを取得できるようGitHub CLIを組み合わせて出してみた

  • リポジトリ一覧
gh repo list --json=name,nameWithOwner,owner,url,isPrivate
  • pagesの存在確認
$ gh api \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  /repos/swfz/js-api/pages

利用の覚えのあるリポジトリで見てみる

  • 利用している場合
{
  "url": "https://api.github.com/repos/swfz/js-api/pages",
  "status": "built",
  "cname": null,
  "custom_404": false,
  "html_url": "http://swfz.github.io/js-api/",
  "build_type": "legacy",
  "source": {
    "branch": "gh-pages",
    "path": "/"
  },
  "public": true,
  "protected_domain_state": null,
  "pending_domain_unverified_at": null,
  "https_enforced": false
}
  • 利用していない場合
{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/pages/pages#get-a-apiname-pages-site",
gh: Not Found (HTTP 404)
  "status": "404"
}

ない場合は404が返ってくる

一括で取得する

gh repo list --limit 200  --json=name,nameWithOwner,url,isPrivate | jq -cr '.[]|.nameWithOwner' | xargs -i sh -lc "gh api -H 'Accept: application/vnd.github+json' -H 'X-GitHub-Api-Version: 2022-11-28' /repos/{}/pages" | tee -a pages.json

これでリスト作れば一覧で取得できる

あとはご自由にという感じ

おまけ

duckdbで見てみた

D select url,cname,build_type,source from pages.json where status != '404';
┌──────────────────────────────────────────────────────────────┬───────────────┬────────────┬──────────────────────────────────┐
│                             url                              │     cname     │ build_type │              source              │
│                           varcharvarcharvarchar   │               json               │
├──────────────────────────────────────────────────────────────┼───────────────┼────────────┼──────────────────────────────────┤
│ https://api.github.com/repos/swfz/ngx-sample/pages           │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/ngx-libraries/pages        │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/chartjs-sample/pages       │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/marble-diagram/pages       │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/angular-pwa-sample/pages   │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/ngx-table-input/pages      │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/ng2-sample/pages           │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/darts/pages                │ darts.swfz.io │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/mkdocs_sample/pages        │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/sw_push_notification/pages │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
│ https://api.github.com/repos/swfz/js-api/pages               │               │ legacy     │ {"branch":"gh-pages","path":"/"} │
├──────────────────────────────────────────────────────────────┴───────────────┴────────────┴──────────────────────────────────┤
│ 11 rows                                                                                                            4 columns │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

D

11個も出てきた

すべてlegacy...

最近Pages使っていなかったなーと思ったのでどこかでまた使おうかなというのと放置も良くないので不要であれば消すなりなんなりの対応をしないとなーと思った