GitHub の CLI 1.0 がリリースされました。
macOS だと brew でインストールできます。
% brew install gh Updating Homebrew... ==> Auto-updated Homebrew! ==> Downloading https://homebrew.bintray.com/bottles/gh-1.0.0.catalina.bottle.ta ==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/77b42bd6b610134ee3b40 : ==> Summary 🍺 /usr/local/Cellar/gh/1.0.0: 60 files, 16.2MB
gh auth login
で対話的に認証設定ができます。Personal Access Token を使って認証するようにしました。repo
と read:org
へのアクセスを許可した Token を指定する必要があります。
% gh auth login ? What account do you want to log into? GitHub.com - Logging into github.com ? How would you like to authenticate? Paste an authentication token Tip: you can generate a Personal Access Token here https://github.com/settings/tokens The minimum required scopes are 'repo' and 'read:org'. ? Paste your authentication token: **************************************** ? Choose default git protocol SSH - gh config set -h github.com git_protocol ssh ✓ Configured git protocol ✓ Logged in as kondoumh
ドキュメントは以下。
Core commands として gist, issue, pr, release, repo のサブコマンドが、Additional commands として上記の auth や config, help などの補助的なサブコマンドが提供されています。
CORE COMMANDS gist: Create gists issue: Manage issues pr: Manage pull requests release: Manage GitHub releases repo: Create, clone, fork, and view repositories ADDITIONAL COMMANDS alias: Create command shortcuts api: Make an authenticated GitHub API request auth: Login, logout, and refresh your authentication completion: Generate shell completion scripts config: Manage configuration for gh help: Help about any command
ローカルに Clone したリポジトリのディレクトリに移動して、gh release
を使うとリリース一覧 や個別のリリースの ChangeLog や Assets を見ることができます。
release list
や release view
などの サブコマンドに --web (-w) フラグをつけると Web ブラウザで該当ページを開きます。
% gh release view v1.9.0 -w Opening github.com/kondoumh/sbe/releases/tag/v1.9.0 in your browser.
repo
サブコマンドでは、clone や create ができますし、repo view
でテキストブラウザ的に Terminal で リポジトリの README を閲覧できます。
サブコマンドの使い方を調べるには gh help issue list
のように help を挟めば usage がプリントされます。
% gh help issue list List and filter issues in this repository USAGE gh issue list [flags] FLAGS -a, --assignee string Filter by assignee -A, --author string Filter by author -l, --label strings Filter by labels -L, --limit int Maximum number of issues to fetch (default 30) --mention string Filter by mention -m, --milestone number Filter by milestone number or `title` -s, --state string Filter by state: {open|closed|all} (default "open") -w, --web Open the browser to list the issue(s) INHERITED FLAGS --help Show help for command -R, --repo OWNER/REPO Select another repository using the OWNER/REPO format EXAMPLES $ gh issue list -l "help wanted" $ gh issue list -A monalisa $ gh issue list --web $ gh issue list --milestone 'MVP'
ここでは、list や view などの参照系コマンドだけしか示してませんが、issue や Release や PR などを create したり delete したりする更新系のコマンドも利用できます。GitHub のページで Chrome のタブがいっぱいになりがちなので、CLI と Web をうまく使い分けられると効率が上がりそうですし、自動化にも役立ちそうです。Actions のサブコマンドも提供されるとよいと思いました。
Additonal commands として api
があります。GitHub API を最初から認証された状態で呼び出せます。
% gh api repos/kondoumh/sbe/releases
curl で呼び出すのに比べると https://api.github.com
という固定の base url を省略できたり、認証トークンを ヘッダーに渡す手間が省けるのでこれも便利だと思います。