5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go初心者が、GWに、GitHubAPIを使ってCLIツールを自作してみた話

Posted at

その名も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を出したのかの概要がわかります。
list.png

続いてPR番号を指定して、詳細を見てみましょう。

$ gopr -o docker -r compose -n 6476 info

コミットログや、PRの内容がわかります。
detail-1.png

PRのheadとbaseの差分も取れます。

$ gopr -o docker -r compose -n 6584 diff

diff.png

最後に、PRを出してみましょう。今回は、Docker/composeに出すわけにもいかないので私のRepositoryで出します。

$ gopr -o yutaroyamanaka -r gopr create

綺麗に、Branch名の補完も効きます。(見た目がかっこいい...)
TitleとBody, headとbaseとなるBranchを入力してあげれば、新しくPRが作成されます。
スクリーンショット 2019-05-03 15.03.08.png

使ったライブラリや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などに出してくれると嬉しいです。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?