2024-07-13 11:00:37 -05:00
|
|
|
name: Close Discussion on PR Merge
|
|
|
|
|
|
|
|
on:
|
|
|
|
pull_request:
|
|
|
|
types: [closed]
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
closeDiscussion:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2024-07-30 21:05:13 -05:00
|
|
|
- name: Checkout repository
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
|
2024-07-13 11:00:37 -05:00
|
|
|
- name: Check if PR was merged
|
|
|
|
if: github.event.pull_request.merged == true
|
|
|
|
run: echo "PR was merged"
|
2024-07-30 21:05:13 -05:00
|
|
|
|
|
|
|
- name: Extract Discussion Number & Close If any Were Found
|
2024-07-25 15:17:54 -05:00
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
2024-07-13 11:00:37 -05:00
|
|
|
if: github.event.pull_request.merged == true
|
|
|
|
id: extract-discussion
|
|
|
|
run: |
|
2024-07-30 21:05:13 -05:00
|
|
|
pr_body="${{ github.event.pull_request.body }}"
|
|
|
|
discussion_ids=$(echo "$pr_body" | jq -r 'scan("(?i)(resolve|fix|close)[s|d]? #[0-9]+")' | grep -o '#[0-9]*' | tr -d '#')
|
|
|
|
|
|
|
|
if [ -z "$discussion_ids" ]; then
|
|
|
|
echo "No discussion IDs found."
|
|
|
|
exit 0
|
|
|
|
fi
|
2024-07-25 15:17:54 -05:00
|
|
|
|
2024-07-30 21:05:13 -05:00
|
|
|
for discussion_id in $discussion_ids; do
|
|
|
|
echo "Closing discussion #$discussion_id"
|
|
|
|
response=$(curl -s -o /dev/null -w "%{http_code}" -X PATCH -H "Authorization: token $GITHUB_TOKEN" \
|
2024-07-25 15:17:54 -05:00
|
|
|
-d '{"state": "closed"}' \
|
2024-07-30 21:05:13 -05:00
|
|
|
"https://api.github.com/repos/${{ github.repository }}/discussions/$discussion_id")
|
|
|
|
|
|
|
|
if [ "$response" -ne 200 ]; then
|
|
|
|
echo "Failed to close discussion #$discussion_id. HTTP status code: $response"
|
|
|
|
exit 1
|
|
|
|
fi
|
2024-07-25 15:17:54 -05:00
|
|
|
done
|
2024-07-30 21:05:13 -05:00
|
|
|
shell: bash
|