From 5ad9e53f10eb31542eafc9a14f85c18d8d850533 Mon Sep 17 00:00:00 2001 From: MyDrift Date: Tue, 19 Nov 2024 21:16:58 +0100 Subject: [PATCH 1/2] update issue commands workflow - remove existing workflow - copy linutil's workflow into winutil - add @CodingWonders as allowed user --- ...command.yaml => issue-slash-commands.yaml} | 60 ++++++++++++++++--- 1 file changed, 51 insertions(+), 9 deletions(-) rename .github/workflows/{close-issue-command.yaml => issue-slash-commands.yaml} (51%) diff --git a/.github/workflows/close-issue-command.yaml b/.github/workflows/issue-slash-commands.yaml similarity index 51% rename from .github/workflows/close-issue-command.yaml rename to .github/workflows/issue-slash-commands.yaml index e27ba51e..a5d0e6fb 100644 --- a/.github/workflows/close-issue-command.yaml +++ b/.github/workflows/issue-slash-commands.yaml @@ -1,11 +1,11 @@ -name: Close issue on /close +name: Issue slash commands on: issue_comment: types: [created, edited] jobs: - closeIssueOnClose: + issueCommands: # Skip this job if the comment was created/edited on a PR if: ${{ !github.event.issue.pull_request }} runs-on: ubuntu-latest @@ -17,6 +17,30 @@ jobs: steps: - run: echo "command=false" >> $GITHUB_ENV + - name: Check for /label command + id: check_label_command + run: | + if [[ "${{ contains(github.event.comment.body, '/label') }}" == "true" ]]; then + echo "command=true" >> $GITHUB_ENV + LABEL_NAME=$(echo "${{ github.event.comment.body }}" | awk -F"/label" '/\/label/ { match($2, /'\''([^'\'']*)'\''/, arr); if (arr[1] != "") print arr[1] }') + echo "label_command=true" >> $GITHUB_ENV + echo "label_name=${LABEL_NAME}" >> $GITHUB_ENV + else + echo "label_command=false" >> $GITHUB_ENV + fi + + - name: Check for /unlabel command + id: check_unlabel_command + run: | + if [[ "${{ contains(github.event.comment.body, '/unlabel') }}" == "true" ]]; then + echo "command=true" >> $GITHUB_ENV + UNLABEL_NAME=$(echo "${{ github.event.comment.body }}" | awk -F"/unlabel" '/\/unlabel/ { match($2, /'\''([^'\'']*)'\''/, arr); if (arr[1] != "") print arr[1] }') + echo "unlabel_command=true" >> $GITHUB_ENV + echo "unlabel_name=${UNLABEL_NAME}" >> $GITHUB_ENV + else + echo "unlabel_command=false" >> $GITHUB_ENV + fi + - name: Check for /close command id: check_close_command run: | @@ -43,15 +67,15 @@ jobs: id: check_user if: env.command == 'true' run: | - ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC") + ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC" "CodingWonders" "${{ github.event.issue.user.login }}") if [[ " ${ALLOWED_USERS[@]} " =~ " ${{ github.event.comment.user.login }} " ]]; then echo "user=true" >> $GITHUB_ENV else - echo "user=false" >> $GITHUB_ENV + exit 0 fi - - name: Close issue if conditions are met - if: env.close_command == 'true' && env.user == 'true' + - name: Close issue + if: env.close_command == 'true' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ISSUE_NUMBER: ${{ github.event.issue.number }} @@ -62,12 +86,30 @@ jobs: else gh issue close $ISSUE_NUMBER --repo ${{ github.repository }} fi - - - name: Reopen issue if conditions are met - if: env.reopen_command == 'true' && env.user == 'true' + + - name: Reopen issue + if: env.reopen_command == 'true' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ISSUE_NUMBER: ${{ github.event.issue.number }} run: | echo Reopening the issue... gh issue reopen $ISSUE_NUMBER --repo ${{ github.repository }} + + - name: Label issue + if: env.label_command == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ISSUE_NUMBER: ${{ github.event.issue.number }} + run: | + echo Labeling the issue... + gh issue edit $ISSUE_NUMBER --repo ${{ github.repository }} --add-label "${{ env.label_name }}" + + - name: Remove labels + if: env.unlabel_command == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ISSUE_NUMBER: ${{ github.event.issue.number }} + run: | + echo Unlabeling the issue... + gh issue edit $ISSUE_NUMBER --repo ${{ github.repository }} --remove-label "${{ env.unlabel_name }}" \ No newline at end of file From d27ab7517cd934cf1a69634abe8187fe26ea7c94 Mon Sep 17 00:00:00 2001 From: MyDrift Date: Tue, 19 Nov 2024 21:20:17 +0100 Subject: [PATCH 2/2] remove op from rights - op could spam and create a ton of new labels, or spam workflow to close, reopen and so one --- .github/workflows/issue-slash-commands.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issue-slash-commands.yaml b/.github/workflows/issue-slash-commands.yaml index a5d0e6fb..e8b36b4a 100644 --- a/.github/workflows/issue-slash-commands.yaml +++ b/.github/workflows/issue-slash-commands.yaml @@ -67,7 +67,7 @@ jobs: id: check_user if: env.command == 'true' run: | - ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC" "CodingWonders" "${{ github.event.issue.user.login }}") + ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC" "CodingWonders") if [[ " ${ALLOWED_USERS[@]} " =~ " ${{ github.event.comment.user.login }} " ]]; then echo "user=true" >> $GITHUB_ENV else