その名もgopr
https://github.com/yutaroyamanaka/gopr
go + Pull Reqeust(以後PR)の頭文字をとってくっつけただけのシンプルな名前です。
Go初心者かつ、学生である筆者がアウトプットとしてGWに集中して開発しました。(10連休長かった!)
OrganizationまたはUserと、Repositoryを指定することで、そのRepositoryでOpenになっているPRの情報が取得できたり
新しくPRを作成したりできます。(ここらへんは hubコマンドに似ていますね。 https://github.com/github/hub)
詳しい使い方は、READMEを読んでください。
https://github.com/yutaroyamanaka/gopr/blob/master/README.md
インストールして、使ってみる。
macの方は、homebrewでインストールできます。
Linuxでamd64の方は、https://github.com/yutaroyamanaka/gopr/releases
ここからダウンロードできます。Windowsは今回動作の確認手段がなかったのでリリースしていません。
$ brew tap yutaroyamanaka/gopr
$ brew install gopr
続いて、GitHubAPIのAccess Tokenを取得します。
your github account nameのところを、自分のGitHubユーザー名にしてください。
$ curl -u 'your github account name' -d '{"scopes":["repo"],"note":"Help example"}' https://api.github.com/authorizations
レスポンスにあるtokenをbash_profileなどで、環境変数化させてください。
export GITHUB_TOKEN="your_token"
例えばOSSのDocker/composeに関して、今出ているPRの一覧を取得してみましょう。
$ gopr -o docker -r compose info
こんな感じで、誰がいつ、どんな内容のPRを出したのかの概要がわかります。
続いてPR番号を指定して、詳細を見てみましょう。
$ gopr -o docker -r compose -n 6476 info
PRのheadとbaseの差分も取れます。
$ gopr -o docker -r compose -n 6584 diff
最後に、PRを出してみましょう。今回は、Docker/composeに出すわけにもいかないので私のRepositoryで出します。
$ gopr -o yutaroyamanaka -r gopr create
綺麗に、Branch名の補完も効きます。(見た目がかっこいい...)
TitleとBody, headとbaseとなるBranchを入力してあげれば、新しくPRが作成されます。
使ったライブラリやAPIなど
簡単かつ速やかにCLIツールが、作れるライブラリです。
https://github.com/urfave/cli
新しくプルリクエストを出す際に、ブランチ名を補完するのに使いました。
見た目がかっこよくなりました。
https://github.com/c-bata/go-prompt
GitHub API
Pull Requestなどの情報を取るために使用しました。
エンドポイントとかが非常に人間にわかりやすく、綺麗な設計がなされていると感じました。
https://developer.github.com/v3/
感想
GitHubAPIや他のライブラリを使って、Go初心者でもかなり短時間でちょっとしたCLIツールを作ることができました。とはいえ、まだテストコードが不十分であったりコードが汚いなど、問題も山積みなので
これから少しずつ直していこうと思います。意見や感想などがあればGitHubのIssueなどに出してくれると嬉しいです。