From e6ea010165b00291136ecc230afd1510ad5591fe Mon Sep 17 00:00:00 2001 From: KTrain5369 <69028025+KTrain5169@users.noreply.github.com> Date: Thu, 11 Jul 2024 22:28:48 +1000 Subject: [PATCH] chore: this is how PR templates are supposed to work apparently bonus: new github action that will now auto-label, auto-assign and auto-request review from relevant people :thumbsup: --- .../ISSUE_TEMPLATE/01-add-an-alternative.md | 2 +- .../01-add-an-alternative.md | 11 +-- .../PULL_REQUEST_TEMPLATE/02-site-changes.md | 11 +-- .../PULL_REQUEST_TEMPLATE/03-chore-stuff.md | 9 +-- .github/pull_request_template.yml | 4 + .github/workflows/pr_management.yml | 79 +++++++++++++++++++ 6 files changed, 90 insertions(+), 26 deletions(-) create mode 100644 .github/pull_request_template.yml create mode 100644 .github/workflows/pr_management.yml diff --git a/.github/ISSUE_TEMPLATE/01-add-an-alternative.md b/.github/ISSUE_TEMPLATE/01-add-an-alternative.md index 19d79da..ff42d3e 100644 --- a/.github/ISSUE_TEMPLATE/01-add-an-alternative.md +++ b/.github/ISSUE_TEMPLATE/01-add-an-alternative.md @@ -2,7 +2,7 @@ name: Add an alternative to the list about: Suggest the inclusion of a new mod that can replace an Essential function. title: "Add [mod] to the alternatives page." -labels: enhancement +labels: add mod assignees: - KTrain5169 - blryface diff --git a/.github/PULL_REQUEST_TEMPLATE/01-add-an-alternative.md b/.github/PULL_REQUEST_TEMPLATE/01-add-an-alternative.md index 3fc406d..e3f529b 100644 --- a/.github/PULL_REQUEST_TEMPLATE/01-add-an-alternative.md +++ b/.github/PULL_REQUEST_TEMPLATE/01-add-an-alternative.md @@ -1,12 +1,5 @@ ---- -name: Adding new alternative -about: Select this if you are adding a new mod to the alternatives page. -title: "add: [mod name] to alternatives page" -labels: enhancement -assignees: - - KTrain5169 - - blryface ---- +# Alternative addition template + ## What part(s) of Essential does this mod replace? diff --git a/.github/PULL_REQUEST_TEMPLATE/02-site-changes.md b/.github/PULL_REQUEST_TEMPLATE/02-site-changes.md index 8912639..1131919 100644 --- a/.github/PULL_REQUEST_TEMPLATE/02-site-changes.md +++ b/.github/PULL_REQUEST_TEMPLATE/02-site-changes.md @@ -1,12 +1,5 @@ ---- -name: Site changes -about: Select this if you changed the website in a different way. -title: "change/fix (choose one): [short description of the change]" -labels: enhancement -assignees: - - blryface - - WorldWidePixel ---- +# Site changes template + ## Are there major changes (ex: signficantly revamping the website visuals) that we NEED to know about? diff --git a/.github/PULL_REQUEST_TEMPLATE/03-chore-stuff.md b/.github/PULL_REQUEST_TEMPLATE/03-chore-stuff.md index a62a2af..20e1027 100644 --- a/.github/PULL_REQUEST_TEMPLATE/03-chore-stuff.md +++ b/.github/PULL_REQUEST_TEMPLATE/03-chore-stuff.md @@ -1,10 +1,5 @@ ---- -name: Other stuff that won't affect what people see -about: Select this if you are modifying something that won't affect what other people see on the site. -title: "chore: [short description of changes go here]" -labels: documentation -assignees: KTrain5169 ---- +# Chore/documentation template + ## What have you changed? diff --git a/.github/pull_request_template.yml b/.github/pull_request_template.yml new file mode 100644 index 0000000..cdb34b9 --- /dev/null +++ b/.github/pull_request_template.yml @@ -0,0 +1,4 @@ +pull_request_templates: +- .github/PULL_REQUEST_TEMPLATE/01-add-an-alternative.md +- .github/PULL_REQUEST_TEMPLATE/02-site-changes.md +- .github/PULL_REQUEST_TEMPLATE/03-chore-stuff.md \ No newline at end of file diff --git a/.github/workflows/pr_management.yml b/.github/workflows/pr_management.yml new file mode 100644 index 0000000..ba25b89 --- /dev/null +++ b/.github/workflows/pr_management.yml @@ -0,0 +1,79 @@ +name: Auto Label PRs, then add assignees and reviewers automatically. + +on: + pull_request: + types: [opened, edited, synchronize] + +jobs: + add_labels_reviewers_assignees: + name: Add labels, then reviewers & assignees + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Label PR based on content + uses: actions/github-script@v6 + id: label-pr + with: + script: | + const labels = { + 'Alternative addition template': 'add mod', + 'Site changes template': 'enhancement', + 'Chore/documentation template': 'documentation' + }; + + const body = context.payload.pull_request.body.toLowerCase(); + + const foundLabels = Object.entries(labels) + .filter(([keyword]) => body.includes(keyword)) + .map(([, label]) => label); + + if (foundLabels.length > 0) { + await github.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.pull_request.number, + labels: foundLabels + }); + } + + return foundLabels; + + - name: Set Reviewers and Assignees + if: steps.label-pr.outputs.result + uses: actions/github-script@v6 + with: + script: | + const labelToReviewers = { + 'add mod': ['KTrain5169', 'blryface'], + 'enhancement': ['WorldWidePixel', 'Nitrrine'], + 'documentation': ['blryface', 'KTrain5169', 'WorldWidePixel'] + }; + + const labels = ${{ steps.label-pr.outputs.result }}; + const reviewers = new Set(); + + labels.forEach(label => { + (labelToReviewers[label] || []).forEach(reviewer => reviewers.add(reviewer)); + }); + + if (reviewers.size > 0) { + await github.pulls.requestReviewers({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.payload.pull_request.number, + reviewers: Array.from(reviewers) + }); + } + + await github.issues.addAssignees({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.pull_request.number, + assignees: [context.payload.pull_request.user.login] + }); + - name: Comment on PRs + uses: dannyskoog/pull-request-comment@v1 + with: + message: I've labeled your PR, assigned you and requested reviews from the relevant people automatically. If you think I did it wrong, please comment below so one of our maintainers can double-check. Thanks! \ No newline at end of file