Add retry command

This commit is contained in:
Zero King
2019-01-05 17:06:06 +00:00
parent 977b45d11f
commit 80c887b233
4 changed files with 43 additions and 8 deletions
+5
View File
@@ -29,6 +29,11 @@ func (receiver *Receiver) handlePullRequest(body []byte) {
log.Println(err)
return
}
receiver.processPullRequest(event)
}
func (receiver *Receiver) processPullRequest(event *github.PullRequestEvent) {
number := *event.Number
owner := *event.Repo.Owner.Login
repo := *event.Repo.Name
+29
View File
@@ -3,7 +3,9 @@ package webhook
import (
"encoding/json"
"log"
"regexp"
"strconv"
"strings"
"github.com/google/go-github/github"
)
@@ -41,6 +43,33 @@ func (receiver *Receiver) handleOtherPullRequestEvents(eventType string, body []
return
}
receiver.membersLock.RLock()
members := receiver.members
receiver.membersLock.RUnlock()
if members != nil {
_, isMember := (*members)[*event.Sender.Login]
if isMember && strings.Contains(*event.Comment.Body, "@macportsbot") { // TODO: read bot user from ENV
body := *event.Comment.Body
if botMentioned, _ := regexp.MatchString(`@macportsbot\s`, body); botMentioned {
if doRetry, _ := regexp.MatchString(`@macportsbot\s+retry`, body); doRetry { // TODO: test compile patterns
pr, err := receiver.githubClient.GetPullRequest(*event.Repo.Owner.Login, *event.Repo.Name, *event.Issue.Number)
if err != nil {
log.Println(err)
return
}
fakeEvent := &github.PullRequestEvent{
Action: ptrOfStr("opened"),
Number: event.Issue.Number,
Repo: event.Repo,
Sender: event.Issue.User,
PullRequest: pr,
}
receiver.processPullRequest(fakeEvent)
}
}
}
}
number = *event.Issue.Number
sender = *event.Sender.Login
default:
-8
View File
@@ -206,11 +206,3 @@ func (stub *stubDBHelper) SetPRProcessed(number int, processed bool) error {
func (stub *stubDBHelper) SetPRPendingReview(number int, pendingReview bool) error {
return nil
}
func ptrOfStr(s string) *string {
return &s
}
func ptrOfInt(s int) *int {
return &s
}
+9
View File
@@ -0,0 +1,9 @@
package webhook
func ptrOfStr(s string) *string {
return &s
}
func ptrOfInt(s int) *int {
return &s
}