リポジトリ一覧取得のコマンドがGitHub CLIに追加されていることに気づき、便利そうと思ったので使い方を共有しておきます。
GitHub CLIをご存知ない方は、以下の記事が参考になると思います。
GitHub CLIのインストールやアップデート方法の詳細は以下参照。
https://github.com/cli/cli#installation
また、GitHub CLIは先月末(2021/8末)にメジャーアップしてv2.0.0になっているので、他にも探してみると便利機能が追加されているかもしれません。
リポジトリ一覧取得の方法
$ gh repo list
以下のように、リポジトリ名、説明、private/public/fork、最終更新日時、が一覧されます。
デフォルトでは認証しているアカウントのリポジトリ一覧が30個まで表示されます。
リポジトリ名がわかればgh repo clone <repository>
でコマンドだけでcloneできますね。
Showing 30 of 51 repositories in @inayuky
inayuky/ruby-sampler Ruby sample programs private 2m
inayuky/js-sampler JavaScript sample programs private 29m
inayuky/terraform-qiita-search Terraform template for QiitaSearch public 23h
inayuky/circleci-sampler-awscli-001 private 5d
inayuky/webstorm-react-work private 7d
inayuky/sample_app private 7d
inayuky/terraform-fess-sample Terraform template to start Fess on EC2 public 12d
inayuky/toy-app private 19d
inayuky/hello_app private 21d
inayuky/terraform-sampler Terraform sample programs private Aug 8, 2021
inayuky/docker-fess Docker files for Fess public, fork May 29, 2021
・
・
・
引数を指定すれば、他アカウントのpublicリポジトリ一覧も取得できます。
$ gh repo list increments
Showing 30 of 69 repositories in @increments
increments/graphql-kaminari_connection Kaminari based GraphQL pagination public 1d
increments/textcomplete Autocomplete for HTMLTextAreaElement and more. public, fork 10d
increments/qiita-markdown Qiita-specified markdown processor. public 15d
increments/greenmat The Markdown parser for Qiita, based on Redcarpet. public, fork 15d
increments/qiitan-rb A template to create and deploy your ruboty on slack. public, fork May 17, 2021
increments/increments-schedule Everything about Increments' schedule public May 17, 2021
increments/chef-td-agent Chef Cookbook for td-agent (Treasure Agent or Fluentd) public, fork Mar 23, 2021
increments/circleci-coverage_reporter public Oct 8, 2020
increments/js_rails_routes Generate a ES6 module that contains Rails routes public Mar 9, 2020
increments/mastodon Mastodon for Qiita users public, fork Mar 4, 2020
・
・
・
オプション
USAGE
gh repo list [<owner>] [flags]
FLAGS
--archived Show only archived repositories
--fork Show only forks
-q, --jq expression Filter JSON output using a jq expression
--json fields Output JSON with the specified fields
-l, --language string Filter by primary coding language
-L, --limit int Maximum number of repositories to list (default 30)
--no-archived Omit archived repositories
--private Show only private repositories
--public Show only public repositories
--source Show only non-forks
-t, --template string Format JSON output using a Go template
--topic string Filter by topic
よく使いそうなオプションの使用例を列挙しておきます。
publicリポジトリのみ
$ gh repo list --public
privateリポジトリのみ
$ gh repo list --private
最大表示数変更(デフォルトは30個まで表示)
$ gh repo list -L 1000
リポジトリ名のみをJSONで出力する
$ gh repo list --json name
リポジトリ名のみを出力する
$ gh repo list --json name --jq '.[].name'
--jqオプションがあるので、別途jqコマンドは不要なようです。
なお、--jqは--jsonとの併用が必須。
リポジトリ名のみを名前順にソートして出力する
$ gh repo list --json name --jq '.[].name' | sort
デフォルトだと最終更新日順に並ぶようなので、アルファベット順に並べる。
参考
-
GitHub CLI Manual
-
該当のissueとプルリク