jr は jq 風の JSON フィルタリングを Ruby で行えるコマンドラインツールです。
今回はこの jr を使って、GitHub の自分のリポジトリ一覧を取得して、自分が良く使う言語をランキング化してみます。
なお、言語については GitHub の自動検出によるものなので、必ずしも実情を反映しているというものではありません。
jr のインストール
gem コマンドでインストールできます。
多分 Ruby 2.0 以降なら動きます。
$ gem i jr-cli --no-ri --no-rdoc
gem 名は jr
でなく jr-cli
である点に注意してください。
ランキングの作成
以下のコマンドを実行するのみです。
ユーザ名は自分のものに置き換えてください。
GitHub API は 1 ページあたり 100 件まで取得することができます。
私はリポジトリ数が 160 個ほどなので 2 ページ必要ですが、ここも必要に応じて書き換える必要があります。
$ jr 'flat_map(&:itself).group_by{|j| j[:language] }.map{|k, v| [k, v.size] }.sort_by{|k, s| -s }.to_h' <(curl -s 'https://api.github.com/users/yuya-takeyama/repos?per_page=100&page=1') <(curl -s 'https://api.github.com/users/yuya-takeyama/repos?per_page=100&page=2')
{
"PHP": 59,
"Ruby": 47,
"": 19,
"JavaScript": 16,
"Go": 5,
"CSS": 5,
"Shell": 4,
"CoffeeScript": 2,
"Haskell": 2,
"Perl": 2,
"C": 2,
"XSLT": 1,
"VimL": 1,
"Python": 1
}
試行錯誤するときは、Rate Limit に注意しましょう。
予めファイルに保存して、それを読み込むようにすると安心ですね。
自分でドッグフーディングしてみて、ユースケースを探りながら機能追加していきたい。
2014-10-06 01:00 追記
jr Ver. 0.0.2 で Kernel#itself
を追加したのと、その他の修正により、コマンドが少し短くなりました。