それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rubyからgithub のレポでIssueにアクセスする

gitnub のissue の一覧を取りたいなと

Issueを作成・削除・クローズできたら便利じゃないかと思った。

EvernoteやReminder.appと連携したら便利になるんじゃないかと思いついてヤってみた

rubygithub にアクセスするにはoctkit

gem install octkit

octkit というgithub にアクセスするためのAPIラッパーのパッケージが用意されていて手軽にアクセスできる

ログイン

ログインは専用のAPIキーを作成して埋め込んだりOauthつかったり色々できる。

require 'octokit'
client = Octokit::Client.new(:login => '*USERID*', :password => 'PASSWORD');

とりあえず、ぱぱっとなにも考えずに動作確認をしたいのでパスワードを採用。

ISSUE を検索する

ISSUEの検索は、検索APIを経由するのだけれど、ISSUEの検索は、検索専用のキーワード使う。

ret = client.search_issues("first repo:takuya/MyPrivateRepos is:open");

この場合、次の検索条件でissue検索することになる。

  • レポジトリ takuya/MyPriaveteRepos
  • ステータス open
  • タイトル first

issue の検索については、レポジトリにアクセスして、issueを・・とおもったら、ISSUE全体を検索するPermalinkキーワードを使うようです。これは盲点だった。issue の検索方法をDocument読んだり、gem document 読んだり結構探しまわった。

特定のissue のパーマリンク

検索したissue のHTMLパーマリンクを取得するには、html_urlプロパティにアクセスして取得する

ret = client.search_issues("first repo:takuya/MyPrivateRepos is:open");
pp ret.total_count
pp ret.items[0].html_url

issue の新規追加

issue に新規追加するには、

repo_name =  "takuya/SampleRepo"
title = "ミルクを買うのを忘れないでね"
ret = client.create_issue("#{repo_name}","#{title}-autoadd" ,"TODOリストからの新規ついか")

# 作成したissue のpermalink
ret = client.search_issues("#{title}-autoadd repo:#{repo_name} is:open")
puts ret.items[0].html_url

結構簡単

検索方法が分かってしまえば、結構簡単にIssue連携ができる。どっかのアプリに組み込んでもいいかもしれない。