aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Dénès2019-01-20 11:01:30 +0100
committerMaxime Dénès2019-01-20 11:01:30 +0100
commit051b6efe1d730afe1a08eecac71282e24c4d4523 (patch)
treecaf43bb2520bc45abc88e492133e9a49465ae399
parentb2877df2c79147bd2e26e53e43291b9b29a2aab8 (diff)
parent2489ef525881d875c7661d9410b9e1521013dd11 (diff)
Merge PR #9353: Fix merge-pr.sh when multiple review comments
Reviewed-by: maximedenes
-rwxr-xr-xdev/tools/merge-pr.sh15
1 files changed, 8 insertions, 7 deletions
diff --git a/dev/tools/merge-pr.sh b/dev/tools/merge-pr.sh
index ca6d9e0d83..a27dacc5a7 100755
--- a/dev/tools/merge-pr.sh
+++ b/dev/tools/merge-pr.sh
@@ -204,15 +204,16 @@ info "Fetching review data"
reviews=$(curl -s "$API/pulls/$PR/reviews")
msg="Merge PR #$PR: $TITLE"
-select_state() {
- jq -rc 'map(select(.state == "'"$1"'") | .user.login) | join(" ")' <<< "$reviews"
+has_state() {
+ [ "$(jq -rc 'map(select(.user.login == "'"$1"'") | .state) | any(. == "'"$2"'")' <<< "$reviews")" = true ]
}
-for reviewer in $(select_state APPROVED); do
- msg=$(printf '%s\n' "$msg" | git interpret-trailers --trailer Reviewed-by="$reviewer")
-done
-for reviewer in $(select_state COMMENTED); do
- msg=$(printf '%s\n' "$msg" | git interpret-trailers --trailer Ack-by="$reviewer")
+for reviewer in $(jq -rc 'map(.user.login) | unique | join(" ")' <<< "$reviews" ); do
+ if has_state "$reviewer" APPROVED; then
+ msg=$(printf '%s\n' "$msg" | git interpret-trailers --trailer Reviewed-by="$reviewer")
+ elif has_state "$reviewer" COMMENTED; then
+ msg=$(printf '%s\n' "$msg" | git interpret-trailers --trailer Ack-by="$reviewer")
+ fi
done
info "merging"