Skip to content

Commit 3802a94

Browse files
committed
feat(pullvet): handle milestone/demilestoned events via issue
1 parent adafdcd commit 3802a94

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

event.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package actions
22

33
import (
4+
"context"
45
"fmt"
56
"github.com/google/go-github/v28/github"
67
"io/ioutil"
@@ -63,10 +64,41 @@ func CheckSuiteEvent() (*github.CheckSuiteEvent, error) {
6364
return evt.(*github.CheckSuiteEvent), nil
6465
}
6566

67+
func IssueEvent() (*github.IssueEvent, error) {
68+
evt, err := github.ParseWebHook("issue", Event())
69+
if err != nil {
70+
return nil, err
71+
}
72+
return evt.(*github.IssueEvent), nil
73+
}
74+
6675
func PullRequest() (*github.PullRequest, string, string, error) {
6776
var pr *github.PullRequest
6877
var owner, repo string
6978
switch EventName() {
79+
case "issue":
80+
issue, err := IssueEvent()
81+
if err != nil {
82+
return nil, "", "", err
83+
}
84+
85+
client, err := CreateInstallationTokenClient(os.Getenv("GITHUB_TOKEN"), "", "")
86+
if err != nil {
87+
return nil, "", "", err
88+
}
89+
90+
if issue.Issue.GetPullRequestLinks().GetURL() == "" {
91+
return nil, "", "", fmt.Errorf("issue %d is not a pull request", issue.Issue.GetNumber())
92+
}
93+
94+
// This can be a pull_request milestoned/demilestoned events emitted as issue event
95+
owner := issue.Issue.Repository.Owner.GetLogin()
96+
repo := issue.Issue.Repository.GetName()
97+
pull, _, err := client.PullRequests.Get(context.Background(), owner, repo, issue.Issue.GetNumber())
98+
if err != nil {
99+
return nil, "", "", err
100+
}
101+
pr = pull
70102
case "pull_request":
71103
pull, err := PullRequestEvent()
72104
if err != nil {

0 commit comments

Comments
 (0)