MCPcopy Create free account
hub / github.com/cli/cli / RepoProjects

Function RepoProjects

api/queries_repo.go:1099–1134  ·  view source on GitHub ↗

RepoProjects fetches all open projects for a repository.

(client *Client, repo ghrepo.Interface)

Source from the content-addressed store, hash-verified

1097
1098// RepoProjects fetches all open projects for a repository.
1099func RepoProjects(client *Client, repo ghrepo.Interface) ([]RepoProject, error) {
1100 type responseData struct {
1101 Repository struct {
1102 Projects struct {
1103 Nodes []RepoProject
1104 PageInfo struct {
1105 HasNextPage bool
1106 EndCursor string
1107 }
1108 } `graphql:"projects(states: [OPEN], first: 100, orderBy: {field: NAME, direction: ASC}, after: $endCursor)"`
1109 } `graphql:"repository(owner: $owner, name: $name)"`
1110 }
1111
1112 variables := map[string]interface{}{
1113 "owner": githubv4.String(repo.RepoOwner()),
1114 "name": githubv4.String(repo.RepoName()),
1115 "endCursor": (*githubv4.String)(nil),
1116 }
1117
1118 var projects []RepoProject
1119 for {
1120 var query responseData
1121 err := client.Query(repo.RepoHost(), "RepositoryProjectList", &query, variables)
1122 if err != nil {
1123 return nil, err
1124 }
1125
1126 projects = append(projects, query.Repository.Projects.Nodes...)
1127 if !query.Repository.Projects.PageInfo.HasNextPage {
1128 break
1129 }
1130 variables["endCursor"] = githubv4.String(query.Repository.Projects.PageInfo.EndCursor)
1131 }
1132
1133 return projects, nil
1134}
1135
1136// Expected login for Copilot when retrieved as an assignee
1137const CopilotAssigneeLogin = "copilot-swe-agent"

Callers 1

v1ProjectsFunction · 0.85

Calls 5

StringMethod · 0.65
RepoOwnerMethod · 0.65
RepoNameMethod · 0.65
QueryMethod · 0.65
RepoHostMethod · 0.65

Tested by

no test coverage detected