@@ -917,6 +917,48 @@ jobs:
917917
918918 }
919919
920+ # ####################
921+ # ####################
922+ # Compare-PRIndividualReviewers
923+
924+ Function Compare-PRIndividualReviewers {
925+
926+ [CmdletBinding()]
927+ [OutputType([bool])]
928+ Param(
929+ [Parameter(Mandatory = $true)]
930+ [string[]]$GitHubReviewers
931+
932+ )
933+
934+ Try {
935+
936+ # Get PR details from GitHub API
937+ $PrData = Invoke-RestMethod -Uri $PrUrl -Headers $GitHubHeaders -Method Get
938+
939+ # Extract individual reviewer usernames (user objects in requested_reviewers)
940+ $CurrentReviewers = @()
941+
942+ If ($PrData.requested_reviewers) {
943+
944+ $CurrentReviewers = $PrData.requested_reviewers | ForEach-Object { $_.login }
945+
946+ }
947+
948+ # Compare arrays - check if any expected accounts are missing from individual reviewers
949+ $MissingAccounts = $GitHubReviewers | Where-Object { $_ -notin $CurrentReviewers }
950+
951+ Return ($MissingAccounts.Count -gt 0)
952+
953+ } Catch {
954+
955+ Write-Error "Failed to retrieve or compare PR reviewers : $_"
956+ Return $false
957+
958+ }
959+
960+ }
961+
920962 # ####################
921963 # ####################
922964 # Main
@@ -1046,25 +1088,40 @@ jobs:
10461088
10471089 $ReviewerArray = $ReviewerArray | Select-Object -Unique
10481090
1091+ Write-Host "Checking org membership."
1092+
10491093 $TestedReviewerAccounts = Test-OrgMembership -GitHubReviewers $ReviewerArray
10501094 $ValidatedReviewerAccounts = $TestedReviewerAccounts.keys | Where-Object { $TestedReviewerAccounts[$_] }
1051- $AtMentionedGitHubAccounts = Add-AtPrefix -GitHubReviewers $ValidatedReviewerAccounts
10521095
1053- $ReviewerMessage = $AtMentionedGitHubAccounts + $(Get-PrMessage "AutoLabelAssign-ContentLeadReviewNotice")
1096+ $AtMentionedGitHubAccounts = Add-AtPrefix -GitHubReviewers $ValidatedReviewerAccounts
10541097
10551098 If ($ValidatedReviewerAccounts.Length -gt 0) {
10561099
1057- Set-PrReviewer -PrUrl $PrUrl -GitHubReviewers $ValidatedReviewerAccounts
1100+ $MissingReviewers = Compare-PRIndividualReviewers -GitHubReviewers $ValidatedReviewerAccounts
1101+
1102+ If ($MissingReviewers) {
1103+
1104+ Write-Host "Additional reviewers found. Setting reviewers and posting PR comment."
1105+
1106+ $ReviewerMessage = $AtMentionedGitHubAccounts + $(Get-PrMessage "AutoLabelAssign-ContentLeadReviewNotice")
10581107
1059- Set-PrConversationMessage -Message $ReviewerMessage
1108+ Set-PrReviewer -PrUrl $PrUrl -GitHubReviewers $ValidatedReviewerAccounts
1109+ Set-PrConversationMessage -Message $ReviewerMessage
1110+
1111+ } Else {
1112+
1113+ Write-Host "No additional reviewers to add. Not setting reviewers or posting PR comment."
1114+
1115+ }
10601116
10611117 } Else {
10621118
1063- Write-Host "ERROR : No valid reviewers to assign."
1119+ Write-Host "No valid reviewers to assign."
10641120 Write-Host $TestedReviewerAccounts
10651121
10661122 }
10671123
1124+
10681125 } Else {
10691126
10701127 Write-Host "Not adding reviewer because submitter can sign off PR. User permission : $UserPermission."
0 commit comments