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

Function parseReviewers

pkg/cmd/pr/view/view.go:349–384  ·  view source on GitHub ↗

parseReviewers parses given Reviews and ReviewRequests

(pr api.PullRequest)

Source from the content-addressed store, hash-verified

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

Callers 1

prReviewerListFunction · 0.85

Calls 2

AuthorLoginMethod · 0.65
DisplayNameMethod · 0.65

Tested by

no test coverage detected