Skip to content

Commit

Permalink
ci/request-reviews: Avoid duplicates with different casings
Browse files Browse the repository at this point in the history
It's possible to have different casings in OWNERS, so we need to handle
that

(cherry picked from commit e612b89)
  • Loading branch information
infinisil committed Oct 14, 2024
1 parent 6e6a84a commit 5719301
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions ci/request-reviews/get-reviewers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ log "This PR touches ${#touchedFiles[@]} files"
git -C "$gitRepo" show "$baseRef":"$ownersFile" > "$tmp"/codeowners

# Associative array with the user as the key for easy de-duplication
# Make sure to always lowercase keys to avoid duplicates with different casings
declare -A users=()

for file in "${touchedFiles[@]}"; do
Expand Down Expand Up @@ -87,20 +88,20 @@ for file in "${touchedFiles[@]}"; do
log "Team $entry has these members: ${members[*]}"

for user in "${members[@]}"; do
users[$user]=
users[${user,,}]=
done
else
# Everything else is a user
users[$entry]=
users[${entry,,}]=
fi
done

done

# Cannot request a review from the author
if [[ -v users[$prAuthor] ]]; then
if [[ -v users[${prAuthor,,}] ]]; then
log "One or more files are owned by the PR author, ignoring"
unset 'users[$prAuthor]'
unset 'users[${prAuthor,,}]'
fi

gh api \
Expand All @@ -111,9 +112,9 @@ gh api \

# And we don't want to rerequest reviews from people who already reviewed
while read -r user; do
if [[ -v users[$user] ]]; then
if [[ -v users[${user,,}] ]]; then
log "User $user is a code owner but has already left a review, ignoring"
unset 'users[$user]'
unset 'users[${user,,}]'
fi
done < "$tmp/already-reviewed-by"

Expand Down

0 comments on commit 5719301

Please sign in to comment.