RepoLabels fetches all the labels in a repository
(client *Client, repo ghrepo.Interface)
| 1411 | |
| 1412 | // RepoLabels fetches all the labels in a repository |
| 1413 | func RepoLabels(client *Client, repo ghrepo.Interface) ([]RepoLabel, error) { |
| 1414 | type responseData struct { |
| 1415 | Repository struct { |
| 1416 | Labels struct { |
| 1417 | Nodes []RepoLabel |
| 1418 | PageInfo struct { |
| 1419 | HasNextPage bool |
| 1420 | EndCursor string |
| 1421 | } |
| 1422 | } `graphql:"labels(first: 100, orderBy: {field: NAME, direction: ASC}, after: $endCursor)"` |
| 1423 | } `graphql:"repository(owner: $owner, name: $name)"` |
| 1424 | } |
| 1425 | |
| 1426 | variables := map[string]interface{}{ |
| 1427 | "owner": githubv4.String(repo.RepoOwner()), |
| 1428 | "name": githubv4.String(repo.RepoName()), |
| 1429 | "endCursor": (*githubv4.String)(nil), |
| 1430 | } |
| 1431 | |
| 1432 | var labels []RepoLabel |
| 1433 | for { |
| 1434 | var query responseData |
| 1435 | err := client.Query(repo.RepoHost(), "RepositoryLabelList", &query, variables) |
| 1436 | if err != nil { |
| 1437 | return nil, err |
| 1438 | } |
| 1439 | |
| 1440 | labels = append(labels, query.Repository.Labels.Nodes...) |
| 1441 | if !query.Repository.Labels.PageInfo.HasNextPage { |
| 1442 | break |
| 1443 | } |
| 1444 | variables["endCursor"] = githubv4.String(query.Repository.Labels.PageInfo.EndCursor) |
| 1445 | } |
| 1446 | |
| 1447 | return labels, nil |
| 1448 | } |
| 1449 | |
| 1450 | type RepoMilestone struct { |
| 1451 | ID string |