Skip to content

Instantly share code, notes, and snippets.

@yoshida-mediba
Last active May 22, 2017 08:19
Show Gist options
  • Save yoshida-mediba/6473a2b9fa4b247e4803a90d38606dac to your computer and use it in GitHub Desktop.
Save yoshida-mediba/6473a2b9fa4b247e4803a90d38606dac to your computer and use it in GitHub Desktop.

概要

複数のリポジトリのプルリクエストを見ていくのが大変なので、いっきにプルリクを出すやつ。   LabelでWIP付いてると無視、一度表示したのは二度出なくなる機能付き。

つかいかた

  1. インポートのやつをgo getする
  2. tokenとuserとreposを好きなのに変更
  3. go run

send_pr_to_talknote.sh

cronとかに仕込めばいいんじゃないかな

package main
import (
"fmt"
"strings"
"golang.org/x/net/context"
"golang.org/x/oauth2"
"github.com/google/go-github/github"
)
func main() {
token := "token"
user := "yoshida-mediba"
repos := []string{
"study-go",
}
os.Mkdir("/var/tmp/prdump", 0777)
ctx := context.Background()
client := github.NewClient(oauth2.NewClient(ctx, oauth2.StaticTokenSource(
&oauth2.Token{AccessToken: token},
)))
for _, repo := range repos {
issues, _, _ := client.Issues.ListByRepo(ctx, user, repo, nil)
fmt.Println("☆" + repo)
for _, issue := range issues {
if issue.PullRequestLinks == nil {
continue
}
wip := false
for _, label := range issue.Labels {
if strings.ToLower(*label.Name) == "wip" {
wip = true
}
if strings.ToLower(*label.Name) == "work in progress" {
wip = true
}
}
if ! wip {
if os.Mkdir("/var/tmp/prdump/"+strconv.Itoa(*issue.ID), 0777) != nil {
continue
}
fmt.Println(*issue.Title)
fmt.Println(*issue.HTMLURL)
}
}
fmt.Println()
}
}
#!/bin/bash
#
# send_pr_to_talknote.sh [Mail]
#
function sendMailTalknote() {
mime="MIME-Version: 1.0"
type="Content-Type: text/plain; charset=UTF-8"
base="Content-Transfer-Encoding: base64"
from="From: notifier@example.com"
addr="To: $1"
body="$2"
if [ $(echo -e "${body}" | wc -l) -le 2 ]; then
exit
fi
body=$(echo "${body}" | nkf -wMB)
echo -e "${mime}\n${from}\n${addr}\n${type}\n${base}\n\n${body}" | /usr/sbin/sendmail -t -i
}
function isJapanHoliday() {
url="https://www.google.com/calendar/ical/ja.japanese%23holiday%40group.v.calendar.google.com/public/full"
now=$(date +%Y%m%d)
if [[ -n $(curl -sS $url | fgrep "DTSTART;VALUE=DATE:$now") ]]; then
return 0
fi
return 1
}
if ! isJapanHoliday; then
sendMailTalknote $1 "$(/home/h-yoshida/prdump)"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment