Skip to content

Commit

Permalink
fix: behavior with usePullRequestMetadata option (#26)
Browse files Browse the repository at this point in the history
* fix: behavior with usePullRequestMetadata option

* refactor: remove pr map by pr number

* fix: error handling when get pull request
  • Loading branch information
na-ga authored Mar 30, 2022
1 parent 86f3dd9 commit 184e7fa
Showing 1 changed file with 30 additions and 17 deletions.
47 changes: 30 additions & 17 deletions release.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"context"
"encoding/json"
"fmt"
"log"
"regexp"
"strings"

Expand Down Expand Up @@ -235,7 +236,7 @@ func buildReleaseCommits(ctx context.Context, ghClient *githubClient, commits []
}

gen, limit := cfg.ReleaseNoteGenerator, 1000
prs := make(map[int]*github.PullRequest, limit)
prs := make(map[string]*github.PullRequest, limit)
if gen.UsePullRequestMetadata {
opts := &ListPullRequestOptions{
State: PullRequestStateClosed,
Expand All @@ -248,11 +249,29 @@ func buildReleaseCommits(ctx context.Context, ghClient *githubClient, commits []
return nil, err
}
for i := range v {
number := *v[i].Number
prs[number] = v[i]
sha := *v[i].MergeCommitSHA
prs[sha] = v[i]
}
}

getPullRequest := func(commit Commit) (*github.PullRequest, error) {
if !commit.IsMerge() {
return nil, nil
}
if pr, ok := prs[commit.Hash]; ok {
return pr, nil
}
prNumber, ok := commit.PullRequestNumber()
if !ok {
return nil, nil
}
pr, err := ghClient.getPullRequest(ctx, event.Owner, event.Repo, prNumber)
if err != nil {
return nil, fmt.Errorf("failed to get pull request by number %d: %v", prNumber, err)
}
return pr, nil
}

out := make([]ReleaseCommit, 0, len(commits))
for _, commit := range commits {

Expand All @@ -273,22 +292,16 @@ func buildReleaseCommits(ctx context.Context, ghClient *githubClient, commits []
}

if gen.UsePullRequestMetadata {
prNumber, ok := commit.PullRequestNumber()
if !ok {
continue
}
c.PullRequestNumber = prNumber

var err error
pr, ok := prs[prNumber]
if !ok {
pr, err = ghClient.getPullRequest(ctx, event.Owner, event.Repo, prNumber)
}
pr, err := getPullRequest(commit)
if err != nil {
return nil, err
// only error logging, ignore error
log.Printf("Failed to get pull request: %v\n", err)
}
if pr != nil {
c.PullRequestNumber = pr.GetNumber()
c.PullRequestOwner = pr.GetUser().GetLogin()
c.ReleaseNote = extractReleaseNote(pr.GetTitle(), pr.GetBody(), gen.UseReleaseNoteBlock)
}
c.PullRequestOwner = pr.GetUser().GetLogin()
c.ReleaseNote = extractReleaseNote(pr.GetTitle(), pr.GetBody(), gen.UseReleaseNoteBlock)
}

out = append(out, c)
Expand Down

0 comments on commit 184e7fa

Please sign in to comment.