package shared import ( "fmt" "net/http" "sort" "strings" "time" "github.com/cli/cli/v2/api" "github.com/cli/cli/v2/internal/ghrepo" ) func RequestableReviewersForCompletion(httpClient *http.Client, repo ghrepo.Interface) ([]string, error) { client := api.NewClientFromHTTP(api.NewCachedHTTPClient(httpClient, time.Minute*2)) metadata, err := api.RepoMetadata(client, repo, api.RepoMetadataInput{ Reviewers: true, TeamReviewers: true, }) if err != nil { return nil, err } results := []string{} for _, user := range metadata.AssignableUsers { if strings.EqualFold(user.Login(), metadata.CurrentLogin) { continue } if user.Name() != "" { results = append(results, fmt.Sprintf("%s\t%s", user.Login(), user.Name())) } else { results = append(results, user.Login()) } } for _, team := range metadata.Teams { results = append(results, fmt.Sprintf("%s/%s", repo.RepoOwner(), team.Slug)) } sort.Strings(results) return results, nil }