diff --git a/.github/workflows/autoclose-issues.yml b/.github/workflows/autoclose-issues.yml new file mode 100644 index 00000000..4782a50d --- /dev/null +++ b/.github/workflows/autoclose-issues.yml @@ -0,0 +1,54 @@ +name: Autocloser +on: + issues: + types: [opened, edited] + +jobs: + run: + runs-on: ubuntu-latest + steps: + - id: match-title + name: Match title + # if the title contains the word Java (case insensitive) + # we make sure that this word is the end of the string or is followed by a space character (ex. we do not want to match javascript) + # we make sure that this word is the beginning of the string or is preceded by a space character (ex. we do not want to match foojava) + run: | + if [[ ${{ github.event.issue.title }} =~ (^|[[:space:]])([jJ][aA][vV][aA])([[:space:]]|$) ]]; then + echo "match=true" >> $GITHUB_OUTPUT + fi + + - id: get-labels + name: Get labels + run: | + labels="$(curl --retry 5 -s https://api.github.com/repos/simple-icons/simple-icons/pulls/${{ github.event.pull_request.number }} | jq '.labels[].name' | tr '\n' ',' | sed -e 's/"//g' -e 's/,$//')" + echo "labels=$labels" >> $GITHUB_OUTPUT + + # if the issue is labeled as a 'new icon' and it matches Java, we + # - add a comment referring to the removal request + # - we add the 'duplicate' label + # - we close the issue + - name: Close the issue + if: | + steps.match-title.outputs.match == 'true' && + contains(steps.get-labels.outputs.labels, 'new icon') + uses: actions/github-script@v6 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: 'This issue was automatically closed. Please refer to #7374.' + }) + github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['duplicate'] + }) + github.rest.issues.update({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + state: 'closed' + });