From 2489ef525881d875c7661d9410b9e1521013dd11 Mon Sep 17 00:00:00 2001 From: Gaƫtan Gilbert Date: Thu, 17 Jan 2019 19:00:33 +0000 Subject: Fix merge-pr.sh when multiple review comments It used to output duplicate trailers. --- dev/tools/merge-pr.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'dev') 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" -- cgit v1.2.3