| 12 | ) |
| 13 | |
| 14 | func RequestableReviewersForCompletion(httpClient *http.Client, repo ghrepo.Interface) ([]string, error) { |
| 15 | client := api.NewClientFromHTTP(api.NewCachedHTTPClient(httpClient, time.Minute*2)) |
| 16 | |
| 17 | metadata, err := api.RepoMetadata(client, repo, api.RepoMetadataInput{ |
| 18 | Reviewers: true, |
| 19 | TeamReviewers: true, |
| 20 | }) |
| 21 | if err != nil { |
| 22 | return nil, err |
| 23 | } |
| 24 | |
| 25 | results := []string{} |
| 26 | for _, user := range metadata.AssignableUsers { |
| 27 | if strings.EqualFold(user.Login(), metadata.CurrentLogin) { |
| 28 | continue |
| 29 | } |
| 30 | if user.Name() != "" { |
| 31 | results = append(results, fmt.Sprintf("%s\t%s", user.Login(), user.Name())) |
| 32 | } else { |
| 33 | results = append(results, user.Login()) |
| 34 | } |
| 35 | } |
| 36 | for _, team := range metadata.Teams { |
| 37 | results = append(results, fmt.Sprintf("%s/%s", repo.RepoOwner(), team.Slug)) |
| 38 | } |
| 39 | |
| 40 | sort.Strings(results) |
| 41 | return results, nil |
| 42 | } |