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

Function RepoMilestones

api/queries_repo.go:1465–1513  ·  view source on GitHub ↗

RepoMilestones fetches milestones in a repository

(client *Client, repo ghrepo.Interface, state string)

Source from the content-addressed store, hash-verified

1463
1464// RepoMilestones fetches milestones in a repository
1465func RepoMilestones(client *Client, repo ghrepo.Interface, state string) ([]RepoMilestone, error) {
1466 type responseData struct {
1467 Repository struct {
1468 Milestones struct {
1469 Nodes []RepoMilestone
1470 PageInfo struct {
1471 HasNextPage bool
1472 EndCursor string
1473 }
1474 } `graphql:"milestones(states: $states, first: 100, after: $endCursor)"`
1475 } `graphql:"repository(owner: $owner, name: $name)"`
1476 }
1477
1478 var states []githubv4.MilestoneState
1479 switch state {
1480 case "open":
1481 states = []githubv4.MilestoneState{"OPEN"}
1482 case "closed":
1483 states = []githubv4.MilestoneState{"CLOSED"}
1484 case "all":
1485 states = []githubv4.MilestoneState{"OPEN", "CLOSED"}
1486 default:
1487 return nil, fmt.Errorf("invalid state: %s", state)
1488 }
1489
1490 variables := map[string]any{
1491 "owner": githubv4.String(repo.RepoOwner()),
1492 "name": githubv4.String(repo.RepoName()),
1493 "states": states,
1494 "endCursor": (*githubv4.String)(nil),
1495 }
1496
1497 var milestones []RepoMilestone
1498 for {
1499 var query responseData
1500 err := client.Query(repo.RepoHost(), "RepositoryMilestoneList", &query, variables)
1501 if err != nil {
1502 return nil, err
1503 }
1504
1505 milestones = append(milestones, query.Repository.Milestones.Nodes...)
1506 if !query.Repository.Milestones.PageInfo.HasNextPage {
1507 break
1508 }
1509 variables["endCursor"] = githubv4.String(query.Repository.Milestones.PageInfo.EndCursor)
1510 }
1511
1512 return milestones, nil
1513}
1514
1515// v1Projects retrieves set of RepoProjects relevant to given repository:
1516// - Projects for repository

Callers 2

Test_RepoMilestonesFunction · 0.85
RepoMetadataFunction · 0.85

Calls 6

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

Tested by 1

Test_RepoMilestonesFunction · 0.68