From 9bc6adf191d4c597a7252d9056346b87ed6c87fd Mon Sep 17 00:00:00 2001 From: "Mr.k" Date: Thu, 25 Jul 2024 23:17:54 +0300 Subject: [PATCH] Fix 'Close Discussion on PR Merge' Workflow (#2423) * A Fix for 'close-discussion.yml' Workflow * Update Regex for 'Close Discussion on PR Merge' Worflow * Finish last step in 'Close Discussion on PR Merge' Workflow * Remove & Merge the Steps in 'Close Discussion on PR Merge' Workflow * Re-Add Missing Environment Variable * Update Regex for 'Close Discussion on PR Merge' Worflow --- .github/workflows/close-discussion.yml | 32 ++++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/workflows/close-discussion.yml b/.github/workflows/close-discussion.yml index 03a6d9b9..252b7823 100644 --- a/.github/workflows/close-discussion.yml +++ b/.github/workflows/close-discussion.yml @@ -12,19 +12,27 @@ jobs: if: github.event.pull_request.merged == true run: echo "PR was merged" - - name: Extract Discussion Number + - name: Extract Discussion Number & Close If any Where Found + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} if: github.event.pull_request.merged == true id: extract-discussion run: | - echo "discussion=$(echo '${{ github.event.pull_request.body }}' | grep -oP '(?<=Resolves #)\d+')" >> $GITHUB_OUTPUT - shell: bash + echo '${{ github.event.pull_request.body }}' > pr_body.txt - - name: Close the discussion - if: github.event.pull_request.merged == true && steps.extract-discussion.outputs.discussion - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DISCUSSION_ID: ${{ steps.extract-discussion.outputs.discussion }} - run: | - curl -X PATCH -H "Authorization: token $GITHUB_TOKEN" \ - -d '{"state": "closed"}' \ - "https://api.github.com/repos/${{ github.repository }}/discussions/${DISCUSSION_ID}" + discussion_ids_arr=() + 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 + while read -r line; do + discussion_ids_arr+=("$line") + done < discussion_ids_list.txt + + number_of_ids=${#discussion_ids_arr[@]} + for (( i=0; i<${number_of_ids}; i++ )); + do + discussion_id=${discussion_ids_arr[$i]} + echo "$discussion_id" + curl -X PATCH -H "Authorization: token $GITHUB_TOKEN" \ + -d '{"state": "closed"}' \ + 'https://api.github.com/repos/${{ github.repository }}/discussions/$discussion_id' + done + shell: bash