🐙

GitHubのラベルをリポジトリを跨いで操作できるGo製CLIツールtakolabelを作った

2021/12/16に公開

掲題のようなGo製CLIツールを作ってOSSとして公開したので紹介します。

https://github.com/tnagatomi/takolabel

このツールが何をやってくれるか短く言うと、「複数の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-1some-owner-repo-2リポジトリ、another-owner Organizationの another-owner-repo-1 リポジトリに Label 1Label 2Label 3 の各ラベルが一括で作成されます。

他にも指定したラベルを指定したリポジトリで一括削除する takolabel delete、指定したリポジトリのラベルを一括で全て削除する taoklabel empty を実装しています。

複数のリポジトリを跨いで同じようなセットのラベルを管理したいという場面は多いと考えられるので、そういった需要に応えるツールになっているのではないかと思っています。
まだ実装としては未熟なので、機能追加や改善、リファクタリングを重ねていきたいです。

このツールが生まれた背景については個人ブログに詳しく書いたので良かったら読んでみてください:
https://blog.okweird.net/entry/2021/12/15/080000

シンプルなツールですが、使っていただければ嬉しいです。
もちろんIssue、Pull Requestの作成もお待ちしております。

https://github.com/tnagatomi/takolabel

Discussion