GitHubのラベルをリポジトリを跨いで操作できるGo製CLIツールtakolabelを作った
掲題のようなGo製CLIツールを作ってOSSとして公開したので紹介します。
このツールが何をやってくれるか短く言うと、「複数のGitHubリポジトリに渡ってのラベル操作」です。
例えば、A、B、Cというリポジトリがあって、X、Y、Zというラベルをそれぞれのリポジトリに一括で作成したい、といった時にそれを実現してくれるというものです。YAMLにリポジトリとラベルを指定して操作します。GitHub Enterprise Serverにも対応しています。
リポジトリのREADMEに詳しい使い方は書いてありますが、例えばラベルを作成する takolabel create
コマンドでは、コマンド実行ディレクトリに takolabel_create.yml
を置いて、以下のような設定を書きます:
repositories:
- some-owner/some-owner-repo-1
- some-owner/some-owner-repo-2
- another-owner/another-owner-repo-1
labels:
- name: Label 1
description: This is the label one
color: ff0000
- name: Label 2
description: This is the label two
color: 00ff00
- name: Label 3
description: This is the label three
color: 0000ff
すると some-owner
Organizationの some-owner-repo-1
、some-owner-repo-2
リポジトリ、another-owner
Organizationの another-owner-repo-1
リポジトリに Label 1
、Label 2
、Label 3
の各ラベルが一括で作成されます。
他にも指定したラベルを指定したリポジトリで一括削除する takolabel delete
、指定したリポジトリのラベルを一括で全て削除する taoklabel empty
を実装しています。
複数のリポジトリを跨いで同じようなセットのラベルを管理したいという場面は多いと考えられるので、そういった需要に応えるツールになっているのではないかと思っています。
まだ実装としては未熟なので、機能追加や改善、リファクタリングを重ねていきたいです。
このツールが生まれた背景については個人ブログに詳しく書いたので良かったら読んでみてください:
シンプルなツールですが、使っていただければ嬉しいです。
もちろんIssue、Pull Requestの作成もお待ちしております。
Discussion