Update close-discussion.yml

This commit is contained in:
Chris Titus 2024-07-30 21:05:13 -05:00
parent b4bf321e66
commit 3929459106

View File

@ -8,31 +8,36 @@ jobs:
closeDiscussion: closeDiscussion:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Check if PR was merged - name: Check if PR was merged
if: github.event.pull_request.merged == true if: github.event.pull_request.merged == true
run: echo "PR was merged" run: echo "PR was merged"
- name: Extract Discussion Number & Close If any Where Found - name: Extract Discussion Number & Close If any Were Found
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: github.event.pull_request.merged == true if: github.event.pull_request.merged == true
id: extract-discussion id: extract-discussion
run: | run: |
echo '${{ github.event.pull_request.body }}' > pr_body.txt 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 '#')
discussion_ids_arr=() if [ -z "$discussion_ids" ]; then
cat pr_body.txt | grep -i -Po '^\s*(-|\d+\.)?\s*(Resolve(s|d)?)\s*#\d+\s*$|^\s*(-|\d+\.)?\s*(Fix(es|ed)?)\s*#\d+\s*$|^\s*(-|\d+\.)?\s*(Close(s|d)?)\s*#\d+\s*$' | awk -F '#' '{print $2}' > discussion_ids_list.txt echo "No discussion IDs found."
while read -r line; do exit 0
discussion_ids_arr+=("$line") fi
done < discussion_ids_list.txt
number_of_ids=${#discussion_ids_arr[@]} for discussion_id in $discussion_ids; do
for (( i=0; i<${number_of_ids}; i++ )); echo "Closing discussion #$discussion_id"
do response=$(curl -s -o /dev/null -w "%{http_code}" -X PATCH -H "Authorization: token $GITHUB_TOKEN" \
discussion_id=${discussion_ids_arr[$i]}
echo "$discussion_id"
curl -X PATCH -H "Authorization: token $GITHUB_TOKEN" \
-d '{"state": "closed"}' \ -d '{"state": "closed"}' \
'https://api.github.com/repos/${{ github.repository }}/discussions/$discussion_id' "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
done done
shell: bash shell: bash