83 lines
2.2 KiB
Plaintext
83 lines
2.2 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
|
||
|
source .utils
|
||
|
|
||
|
set -e
|
||
|
RENOVATE_USER="29139614"
|
||
|
MERGE=false
|
||
|
|
||
|
print_usage() {
|
||
|
blue "renovate-prs - List all Renovate PRs and batch approve"
|
||
|
echo " "
|
||
|
underline "Usage:"
|
||
|
echo "renovate-prs [options]"
|
||
|
echo " "
|
||
|
underline "Options:"
|
||
|
echo "-h, --help show this help text"
|
||
|
echo "-m, --merge merge PRs after approving"
|
||
|
}
|
||
|
|
||
|
while test $# -gt 0; do
|
||
|
case "$1" in
|
||
|
-m|--merge)
|
||
|
shift
|
||
|
MERGE=true
|
||
|
shift
|
||
|
;;
|
||
|
-h|--help)
|
||
|
print_usage
|
||
|
exit 0
|
||
|
;;
|
||
|
*)
|
||
|
break
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
PULLS=$(curl --silent -L -H "Accept: application/vnd.github+json" \
|
||
|
-H "Authorization: Bearer ${GITHUB_TOKEN}" -H "X-GitHub-Api-Version: 2022-11-28" \
|
||
|
"https://api.github.com/search/issues?q=is%3Apr%20is%3Aopen%20archived%3Afalse%20sort%3Aupdated-desc%20review-requested%3AAverageMarcus%20renovate" \
|
||
|
| jq -r -c ".items[] | select(.user.id == ${RENOVATE_USER} and .draft == false) | @base64")
|
||
|
|
||
|
if [[ "${PULLS}" == "" ]]; then
|
||
|
blue "No Renovate PRs pending"
|
||
|
else
|
||
|
|
||
|
for PR in ${PULLS}; do
|
||
|
PR=$(echo ${PR} | base64 -d)
|
||
|
NUMBER=$(echo ${PR} | jq -r '.number')
|
||
|
TITLE=$(echo ${PR} | jq -r '.title')
|
||
|
URL=$(echo ${PR} | jq -r '.pull_request.html_url')
|
||
|
BODY=$(echo ${PR} | jq -r '.body')
|
||
|
|
||
|
PACKAGES=""
|
||
|
HEADER_FOUND=false
|
||
|
DIVIDER_FOUND=false
|
||
|
while IFS= read -r line; do
|
||
|
if [[ "${line}" == "" ]] && [[ "${HEADER_FOUND}" == "true" ]] && [[ "${DIVIDER_FOUND}" == "true" ]]; then
|
||
|
break
|
||
|
fi
|
||
|
|
||
|
if [[ "${HEADER_FOUND}" == "true" ]] && [[ "${DIVIDER_FOUND}" == "true" ]]; then
|
||
|
line=$(echo ${line} | sed -r 's/\((.+)\)//g' | sed -r 's/(\[|\]|`)//g')
|
||
|
parts=(${line//|/ })
|
||
|
|
||
|
PACKAGES+=" - ${parts[0]} - ${parts[${#parts[@]}-3]]} ➡ ${parts[${#parts[@]}-1]]}\n"
|
||
|
fi
|
||
|
|
||
|
if [[ "${line}" == "| Package | Type | Update | Change |" ]] || [[ "${line}" == "| Package | Update | Change |" ]]; then
|
||
|
HEADER_FOUND=true
|
||
|
fi
|
||
|
if [[ "${line}" == "|---|---|---|---|" ]] || [[ "${line}" == "|---|---|---|" ]]; then
|
||
|
DIVIDER_FOUND=true
|
||
|
fi
|
||
|
done <<< "$BODY"
|
||
|
|
||
|
bold "#${NUMBER} ${STATE} $(blue "${TITLE}")"
|
||
|
printf "🌐 $(underline ${URL})\n"
|
||
|
printf "${PACKAGES}"
|
||
|
echo ""
|
||
|
done
|
||
|
|
||
|
fi
|