func()

in internal/github/find-pr.go [27:48]


func (s *BackportPRNumber) FindPullRequestID(pr *github.PullRequest) (int, error) {
	patterns := []string{`backport #(\d+)`, `cherry-pick of #(\d+)`, `cherry-pick of PR #(\d+)`}
	rDigit, _ := regexp.Compile(`(\d+)`)

	for _, label := range pr.Labels {
		if label.GetName() == "backport" {
			for _, p := range patterns {
				regexPattern, _ := regexp.Compile(p)
				backport := regexPattern.FindString(pr.GetTitle())
				if backport == "" {
					backport = regexPattern.FindString(*pr.Body)
				}

				PRNumber, err := strconv.Atoi(rDigit.FindString(backport))
				if err == nil {
					return PRNumber, err
				}
			}
		}
	}
	return -1, ErrStrategyFailed
}