pkg/ghclient/wrappers.go
func (c *Client) ForEachPR(owner, repo string, opts *github.PullRequestListOptions, continueOnError bool, mungePR PRMungeFunc) error {
	var lastPage int
	// Munge each page as we get it (or in other words, wait until we are ready to munge the next
	// page of issues before getting it). We use depaginate to make the calls, but don't care about
	// the slice it returns since we consume the pages as we go.
	_, err := c.depaginate(
		"processing PRs",
		&opts.ListOptions,
		func() ([]interface{}, *github.Response, error) {
			list, resp, err := c.prService.List(context.Background(), owner, repo, opts)
			if err == nil {
				for _, pr := range list {
					if pr == nil {
						glog.Errorln("Received a nil PR from go-github while listing PRs. Skipping...")
					}
					if mungeErr := mungePR(pr); mungeErr != nil {
						if pr.Number == nil {
							mungeErr = fmt.Errorf("error munging pull request with nil Number field: %v", mungeErr)
						} else {
							mungeErr = fmt.Errorf("error munging pull request #%d: %v", *pr.Number, mungeErr)
						}
						if !continueOnError {
							return nil, resp, &retryAbort{mungeErr}
						}
						glog.Errorf("%v\n", mungeErr)
					}
				}
				if resp.LastPage > 0 {
					lastPage = resp.LastPage
				}
				glog.Infof("ForEachPR processed page %d/%d\n", opts.ListOptions.Page, lastPage)
			}
			return nil, resp, err
		},
	)
	return err
}
func (c *Client) ForEachPR(owner, repo string, opts *github.PullRequestListOptions, continueOnError bool, mungePR PRMungeFunc) error {
	var lastPage int
	// Munge each page as we get it (or in other words, wait until we are ready to munge the next
	// page of issues before getting it). We use depaginate to make the calls, but don't care about
	// the slice it returns since we consume the pages as we go.
	_, err := c.depaginate(
		"processing PRs",
		&opts.ListOptions,
		func() ([]interface{}, *github.Response, error) {
			list, resp, err := c.prService.List(context.Background(), owner, repo, opts)
			if err == nil {
				for _, pr := range list {
					if pr == nil {
						glog.Errorln("Received a nil PR from go-github while listing PRs. Skipping...")
					}
					if mungeErr := mungePR(pr); mungeErr != nil {
						if pr.Number == nil {
							mungeErr = fmt.Errorf("error munging pull request with nil Number field: %v", mungeErr)
						} else {
							mungeErr = fmt.Errorf("error munging pull request #%d: %v", *pr.Number, mungeErr)
						}
						if !continueOnError {
							return nil, resp, &retryAbort{mungeErr}
						}
						glog.Errorf("%v\n", mungeErr)
					}
				}
				if resp.LastPage > 0 {
					lastPage = resp.LastPage
				}
				glog.Infof("ForEachPR processed page %d/%d\n", opts.ListOptions.Page, lastPage)
			}
			return nil, resp, err
		},
	)
	return err
}
func ( c * Client ) ForEachPR ( owner , repo string , opts * github . PullRequestListOptions , continueOnError bool , mungePR PRMungeFunc ) error { var lastPage int // Munge each page as we get it (or in other words, wait until we are ready to munge the next // page of issues before getting it). We use depaginate to make the calls, but don't care about // the slice it returns since we consume the pages as we go. _ , err := c . depaginate ( " " , & opts . ListOptions , func ( ) ( [ ] interface { } , * github . Response , error ) { list , resp , err := c . prService . List ( context . Background ( ) , owner , repo , opts ) if err == nil { for _ , pr := range list { if pr == nil { glog . Errorln ( " " ) } if mungeErr := mungePR ( pr ) ; mungeErr != nil { if pr . Number == nil { mungeErr = fmt . Errorf ( " " , mungeErr ) } else { mungeErr = fmt . Errorf ( " " , * pr . Number , mungeErr ) } if ! continueOnError { return nil , resp , & retryAbort { mungeErr } } glog . Errorf ( " \n " , mungeErr ) } } if resp . LastPage > 0 { lastPage = resp . LastPage } glog . Infof ( " \n " , opts . ListOptions . Page , lastPage ) } return nil , resp , err } , ) return err }
// ForEachPR iterates over all PRs that fit the specified criteria, calling the munge function on every PR.
// If the munge function returns a non-nil error, ForEachPR will return immediately with a non-nil
// error unless continueOnError is true in which case an error will be logged and the remaining PRs will be munged.
ForEachPR iterates over all PRs that fit the specified criteria calling the munge function on every PR . If the munge function returns a non - nil error ForEachPR will return immediately with a non - nil error unless continueOnError is true in which case an error will be logged and the remaining PRs will be munged .