メジャーバージョンを新しくしたGitHub CLIでは、エクステンションのインストールと実行によって、基本的な機能セットを拡張することが可能になった。エクステンションはgh-
で始まるリポジトリで、そのリポジトリと同じ名前の実行ファイルを提供する。
GitHubは、エクステンションで何ができるのかを示すと同時に、開発者がより早く開発に着手できるようにするため、多数のエクステンションをサンプルとして提供している。例えば、gh contribute
エクステンションは、オープンソースプロジェクトで作業可能なイシューを検索し、コントリビューションを開始するエクステンションである。また、gh branch
エクステンションは、任意のオープンプルリクエストに関連するブランチを、日付順に並べ替えることができる。
前述のように、GitHub CLIは単純なリポジトリであり、以下のコマンドを実行すれば簡単に生成することができる。このコマンドはリポジトリを生成し、以降の作業手順を表示するものだ。
gh extension create <extension-name>
次のコマンドをエクステンションから直接実行すれば、GitHubにプッシュする前にローカルエクストラクションをインストールして使用することも可能だ。
gh extension install .
オプションとして、自分のエクステンションを他の開発者にも教えたいのであれば、gh-extension
トピックをリポジトリに追加することで、こちらにリストされるようになる。
gh extension list
を実行すれば、インストール済のエクステンションをリストすることができる。gh extension upgrade <エクステンション名>
あるいはgh extension upgrade --all
を実行して、任意あるいはすべてのエクステンションをアップグレードすることも可能だ。
GitHubによれば、GitHub CLIエクステンションは任意の言語で記述することができる。唯一の要件は、エクステンションの動作を実装したファイルが実行可能であることだが、暗黙の条件として、エクステンションを記述した言語のインタープリタがマシン上にインストールされていることも必要になる。この理由から、GitHubでは、広くサポートされているbash
スクリプトとしてエクステンションを実装するように推奨している。
GitHub CLIがカレントユーザと同じ権限でエクステンションを実行することに注意が必要である。サンドボックスや静的解析といった、悪意のあるコードに対する特別なプロビジョンは用意されていない。従って、インストールしたサードパーティ製エクステンションについては、実行する前にコードを十分にレビューすることが強く推奨される。
GitHub CLIは、開発者がコマンドライン上でイシュー操作やプルリクエストを実行できるようにする目的で、2020年初めにベータ版として公開された。すなわち、Gitのコマンドラインクライアントの置き換えや、あるいは機能的に競合することが目的ではなく、GitHub特有の開発者ワークフローを補完しようとするものである。エクステンションは、開発者が自身の意思に沿ってGitHubワークフローをカスタマイズするという方向への、新たなステップを構成する。