sh 清除GitHub上合并PR的通知

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 清除GitHub上合并PR的通知相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o xtrace

#requires curl and jq

auth="Authorization: token YOUR_SECRET_OAuth_TOKEN"

declare -i pages
headers=$(curl -I -H "${auth}" https://api.github.com/notifications)
if [[ $headers == *"Link:"* ]]
then
  links=$(echo ${headers} |grep -e "Link:")
  pages=$(echo ${links} |tr "," "\n" |grep last |grep -Eo "page=[0-9]+" |grep -Eo "[0-9]+")
else
  pages=1
fi

rm -f /tmp/notifications.json

for ((i=1; i<=$pages; i++)); do
  curl -H "${auth}" https://api.github.com/notifications?page=${i} \
    | jq -r '.[] | select(.unread) | select(.subject.type == "PullRequest") | "\(.id) \(.subject.url)"' \
    >>/tmp/notifications.json
done

#check if a pull request has been merged
is_merged() {
  local STATUS=$(curl -H "${auth}" -s -o /dev/null -w "%{http_code}\n" ${1}/merge)
  if [ $STATUS -eq 204 ]
  then
    return 0
  else
    return 1
  fi
}

#call with id and pr_url
mark_read_if_merged() {
  if is_merged $2;
  then
    curl --request PATCH -H "${auth}" https://api.github.com/notifications/threads/${1}
  fi
}

while read notification_id pr_url
do
  mark_read_if_merged $notification_id $pr_url
done < /tmp/notifications.json

以上是关于sh 清除GitHub上合并PR的通知的主要内容,如果未能解决你的问题,请参考以下文章

在 PR 上通过的所有检查的 Github API Webhook/Notification

github上测试服出现bug,如何回滚并获得合并之前的分支

sh 显示合并PR提交标签

如果评论被用户批准,则通过 Github 操作合并 PR

《Git与Github使用笔记》第12章 Pull Request的使用

《Git与Github使用笔记》第12章 Pull Request的使用