Skip to content

Commit b9ac768

Browse files
authored
Add existing reviewers check
1 parent 10ea272 commit b9ac768

1 file changed

Lines changed: 62 additions & 5 deletions

File tree

.github/workflows/Shared-AutoLabelAssign.yml

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)