Posted at

GitHub 上の自分のリポジトリ名一覧取得

More than 5 years have passed since last update.


get-github-repository-names

curl https://api.github.com/users/kaosf/repos?per_page=100 2> /dev/null | ruby -rjson -e 'JSON.parse(STDIN.read).each{|r|puts r["name"]}'


curl と Ruby を使います.

curl で GitHub の API を叩いて JSON 形式の出力を受け取り,それを Ruby に渡して JSON ライブラリにパースしてもらって出力する,というワンライナーです.

試す場合は kaosf の部分を自分の GitHub アカウントのユーザ名に変更しましょう.

デフォルトだと 30 件ずつしか取得出来ないので per_page オプションで無理矢理拡大してます.

なおこれでは public なリポジトリしか取れません (当然).private リポジトリも取得したいなら認証をアレコレするといいんじゃないかと (よく知らない).


ShellScript Tips

2> /dev/null はリダイレクションと「Linux は何でもファイルだよ文化」の組み合わせ技です.

curl コマンドを使うと,標準エラー出力に通信に関する情報が出力されます.今はそんな情報は不要で見たくないので何処かに捨てたいですね.ではどうやって捨てるかというと,「何もない」を「0 個ある」と表現する感覚で,「出力を捨てる」には「null デバイスに出力する」と良いのです.

Linux ではデバイスもファイルとして扱われるので /dev/null なんてのがファイルとしてあるように見えるわけです./dev/null の場所とか名前とかはディストリビューションによって違うとか聞いたような気もしますけど Ubuntu ではここです.


Ruby Tips

Ruby の引数 -rjsonrequire 'json' と同じ効果をもたらします.

-e 'unkunk'unkunk と書かれたファイルを引数に与えているのと同じ効果をもたらします.

なので ruby -rjson -e 'unkunk'


sample.rb

require 'json'

unkunk

というファイルを用意してそれを使って

ruby sample.rb

としてるのと一緒です!今回程度の短いスクリプトならそもそもファイルを作って管理する方が面倒くさいですからね><


References


余談

ていうかこのくらいのことデフォルトで出来る CLI ツールないですか><