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
|
2024-08-07 15:59:48 -05:00
|
|
|
uses: actions/checkout@v4
|
2024-07-30 21:05:13 -05:00
|
|
|
|
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-08-06 15:50:36 -05:00
|
|
|
|
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 }}"
|
2024-07-30 21:16:47 -05:00
|
|
|
discussion_ids=$(echo "$pr_body" | grep -oP '(?i)(resolve|fix|close)[s|d]? #\K[0-9]+')
|
2024-08-06 15:50:36 -05:00
|
|
|
|
2024-07-30 21:05:13 -05:00
|
|
|
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
|
2024-08-07 21:30:15 -05:00
|
|
|
echo "Attempting to close discussion #$discussion_id"
|
|
|
|
response=$(curl -s -X PATCH -H "Authorization: token $GITHUB_TOKEN" \
|
|
|
|
-H "Accept: application/vnd.github.v3+json" \
|
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")
|
2024-08-09 10:15:20 -05:00
|
|
|
|
2024-08-07 21:30:15 -05:00
|
|
|
if echo "$response" | jq -e '.id' > /dev/null; then
|
|
|
|
echo "Successfully closed discussion #$discussion_id"
|
|
|
|
else
|
|
|
|
error_message=$(echo "$response" | jq -r '.message // "Unknown error"')
|
|
|
|
echo "Warning: Failed to close discussion #$discussion_id. Error: $error_message"
|
|
|
|
echo "Full response: $response"
|
2024-07-30 21:05:13 -05:00
|
|
|
fi
|
2024-07-25 15:17:54 -05:00
|
|
|
done
|
2024-08-06 15:35:17 -05:00
|
|
|
shell: bash
|
2024-08-09 10:15:20 -05:00
|
|
|
continue-on-error: true
|