MCPcopy Index your code
hub / github.com/cli/cli / listRulesets

Function listRulesets

pkg/cmd/ruleset/shared/http.go:49–85  ·  view source on GitHub ↗
(httpClient *http.Client, query string, variables map[string]interface{}, limit int, host string)

Source from the content-addressed store, hash-verified

47}
48
49func listRulesets(httpClient *http.Client, query string, variables map[string]interface{}, limit int, host string) (*RulesetList, error) {
50 pageLimit := min(limit, 100)
51
52 res := RulesetList{
53 Rulesets: []RulesetGraphQL{},
54 }
55 client := api.NewClientFromHTTP(httpClient)
56
57 for {
58 variables["limit"] = pageLimit
59 var data RulesetResponse
60 err := client.GraphQL(host, query, variables, &data)
61 if err != nil {
62 if strings.Contains(err.Error(), "requires one of the following scopes: ['admin:org']") {
63 return nil, errors.New("the 'admin:org' scope is required to view organization rulesets, try running 'gh auth refresh -s admin:org'")
64 }
65
66 return nil, err
67 }
68
69 res.TotalCount = data.Level.Rulesets.TotalCount
70 res.Rulesets = append(res.Rulesets, data.Level.Rulesets.Nodes...)
71
72 if len(res.Rulesets) >= limit {
73 break
74 }
75
76 if data.Level.Rulesets.PageInfo.HasNextPage {
77 variables["endCursor"] = data.Level.Rulesets.PageInfo.EndCursor
78 pageLimit = min(pageLimit, limit-len(res.Rulesets))
79 } else {
80 break
81 }
82 }
83
84 return &res, nil
85}
86
87func min(a, b int) int {
88 if a < b {

Callers 2

ListRepoRulesetsFunction · 0.85
ListOrgRulesetsFunction · 0.85

Calls 5

NewClientFromHTTPFunction · 0.92
GraphQLMethod · 0.80
ContainsMethod · 0.80
minFunction · 0.70
ErrorMethod · 0.45

Tested by

no test coverage detected