approve_all.sh 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. pushd $(dirname "$BASH_SOURCE") > /dev/null
  3. CUR_DIR=$(pwd)
  4. popd > /dev/null
  5. PRN=$1
  6. if [ -z "$PRN" ]; then
  7. echo "$0 <PRN>"
  8. exit 1
  9. fi
  10. pulldata=$(mktemp)
  11. function cleanup {
  12. rm -rf "$pulldata"
  13. }
  14. trap cleanup EXIT
  15. hub api "repos/{owner}/{repo}/pulls?per_page=1000" > $pulldata
  16. PR_NUMBERS=()
  17. for l in $(python -m json.tool $pulldata | grep "\"number\":" | cut -d ':' -f 2 | cut -d "," -f 1 | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
  18. do
  19. PR_NUMBERS+=("$l")
  20. done
  21. PRNS=("$PRN")
  22. for INDEX in $(python -m json.tool $pulldata | grep "\"title\":" | cut -d '"' -f 4 | grep -n "Automated cherry pick of #${PRN}:" | awk 'BEGIN{FS=":"}{print $1}')
  23. do
  24. INDEX=$((INDEX-1))
  25. PRNS+=("${PR_NUMBERS[$INDEX]}")
  26. done
  27. echo "Going to merge the following pull requests ${PRNS[@]}:"
  28. REVIEWER_CHECK=yes
  29. for PRN in "${PRNS[@]}"
  30. do
  31. $CUR_DIR/approve.sh $PRN $REVIEWER_CHECK
  32. if [ "$?" -ne "0" ]; then
  33. echo "Merge failed, exit."
  34. exit 1
  35. fi
  36. if [ -n "$REVIEWER_CHECK" ]; then
  37. REVIEWER_CHECK=
  38. fi
  39. done