概要
最新のマイルストーンの自分にアサインされている issue の一覧ページを開くコマンド yarukoto
を作りました。
ブックマークでも同じようなことが出来ますが、マイルストーンが変わると URL も変わってしまうので、ときどき作りなおす必要がありました。
yarukoto
コマンドではリポジトリの最新のマイルストーンを取得して URL を生成し、ブラウザでページを開きます。
コンソールに一覧を出力してもいいのですが、内容を確認したかったり、Toggle や ZenHub などの連携ツールを使ったりしているのでブラウザで見たかった感じです。
朝会の前に叩くと良い感じでした。
コード
CoffeeScript と ghi を使っています。
yarukoto
#!/usr/local/bin/coffee
execSync = require("child_process").execSync
getMilestone = (path) ->
ghiOutput = execSync("ghi milestone -v", {
"cwd": path
}).toString "utf8"
# #<issue number>: <milestone name> にマッチさせて <issue number> でソート
matches = ghiOutput.match(/^#[0-9]+: .+$/mg)
.map (m) -> m.match(/^#([0-9]+): (.+)$/)
.sort (a, b) -> parseInt(b[1]) - parseInt(a[1])
# 最新の milestone の名前を返す
matches[0][2]
openRecentMilestone = (assignee, repo, path) ->
nextVersion = getMilestone path
queries = [
"is:open"
"is:issue"
"assignee:#{assignee}"
"milestone:#{nextVersion}"
]
url = "https://github.com/#{repo}/issues?q=#{queries.join("+")}"
execSync "open #{url}"
console.log "#{path}: #{nextVersion}"
openRecentMilestone "YOUR GITHUB USERNAME", "YOURCOMPANY/REPONAME1", "/path/to/repository"
openRecentMilestone "YOUR GITHUB USERNAME", "YOURCOMPANY/REPONAME2", "/path/to/repository2"
/usr/local/bin/yarukoto
として保存して出社時に yarukoto
します。