| 327 | } |
| 328 | |
| 329 | func (r *promptingPRResolver) Resolve() (*api.PullRequest, ghrepo.Interface, error) { |
| 330 | r.io.StartProgressIndicator() |
| 331 | listResult, err := r.prLister.List(shared.ListOptions{ |
| 332 | BaseRepo: r.baseRepo, |
| 333 | State: "open", |
| 334 | Fields: []string{ |
| 335 | "number", |
| 336 | "title", |
| 337 | "state", |
| 338 | "isDraft", |
| 339 | |
| 340 | "headRefName", |
| 341 | "headRepository", |
| 342 | "headRepositoryOwner", |
| 343 | "isCrossRepository", |
| 344 | "maintainerCanModify", |
| 345 | }, |
| 346 | LimitResults: 10}) |
| 347 | r.io.StopProgressIndicator() |
| 348 | if err != nil { |
| 349 | return nil, nil, err |
| 350 | } |
| 351 | if len(listResult.PullRequests) == 0 { |
| 352 | return nil, nil, shared.ListNoResults(ghrepo.FullName(r.baseRepo), "pull request", false) |
| 353 | } |
| 354 | |
| 355 | candidates := []string{} |
| 356 | for _, pr := range listResult.PullRequests { |
| 357 | candidates = append(candidates, fmt.Sprintf("%d\t%s %s [%s]", |
| 358 | pr.Number, |
| 359 | shared.PrStateWithDraft(&pr), |
| 360 | text.RemoveExcessiveWhitespace(pr.Title), |
| 361 | pr.HeadLabel(), |
| 362 | )) |
| 363 | } |
| 364 | |
| 365 | selected, err := r.prompter.Select("Select a pull request", "", candidates) |
| 366 | if err != nil { |
| 367 | return nil, nil, err |
| 368 | } |
| 369 | |
| 370 | return &listResult.PullRequests[selected], r.baseRepo, nil |
| 371 | } |