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

Function parseReviewers

pkg/cmd/pr/view/view.go:354–389  ·  view source on GitHub ↗

parseReviewers parses given Reviews and ReviewRequests

(pr api.PullRequest)

Source from the content-addressed store, hash-verified

352
353// parseReviewers parses given Reviews and ReviewRequests
354func parseReviewers(pr api.PullRequest) []*reviewerState {
355 reviewerStates := make(map[string]*reviewerState)
356
357 for _, review := range pr.Reviews.Nodes {
358 if review.Author.Login != pr.Author.Login {
359 name := review.AuthorLogin()
360 if name == "" {
361 name = ghostName
362 }
363 reviewerStates[name] = &reviewerState{
364 Name: name,
365 State: review.State,
366 }
367 }
368 }
369
370 // Overwrite reviewer's state if a review request for the same reviewer exists.
371 for _, reviewRequest := range pr.ReviewRequests.Nodes {
372 name := reviewRequest.RequestedReviewer.DisplayName()
373 reviewerStates[name] = &reviewerState{
374 Name: name,
375 State: requestedReviewState,
376 }
377 }
378
379 // Convert map to slice for ease of sort
380 result := make([]*reviewerState, 0, len(reviewerStates))
381 for _, reviewer := range reviewerStates {
382 if reviewer.State == pendingReviewState {
383 continue
384 }
385 result = append(result, reviewer)
386 }
387
388 return result
389}
390
391// sortReviewerStates puts completed reviews before review requests and sorts names alphabetically
392func sortReviewerStates(reviewerStates []*reviewerState) {

Callers 1

prReviewerListFunction · 0.85

Calls 2

AuthorLoginMethod · 0.65
DisplayNameMethod · 0.65

Tested by

no test coverage detected