aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/approve-merged-contributor.yml
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-21 21:53:03 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-21 21:53:39 +0300
commitcef5c37e5978c48d05be2745a76c813faf8f6ebd (patch)
tree14a6386200206b687be2065d7f72e6ca094f52c8 /.github/workflows/approve-merged-contributor.yml
parente6cbbdb9e384473e4e492e3fcb6e3fe06c2b15ff (diff)
fix: allow maintainer reopened prs through gate
Diffstat (limited to '.github/workflows/approve-merged-contributor.yml')
-rw-r--r--.github/workflows/approve-merged-contributor.yml61
1 files changed, 61 insertions, 0 deletions
diff --git a/.github/workflows/approve-merged-contributor.yml b/.github/workflows/approve-merged-contributor.yml
new file mode 100644
index 00000000..d2dd39f8
--- /dev/null
+++ b/.github/workflows/approve-merged-contributor.yml
@@ -0,0 +1,61 @@
+name: Approve Merged Contributor
+
+on:
+ pull_request_target:
+ types: [closed]
+
+jobs:
+ approve:
+ if: ${{ github.event.pull_request.merged == true }}
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ pull-requests: read
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.event.repository.default_branch }}
+
+ - name: Add merged contributor to approved list
+ id: update
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const fs = require('fs');
+
+ const prAuthor = context.payload.pull_request.user.login;
+ const approvedFile = '.github/APPROVED_CONTRIBUTORS';
+
+ if (prAuthor.endsWith('[bot]') || prAuthor === 'dependabot[bot]') {
+ console.log(`Skipping bot: ${prAuthor}`);
+ core.setOutput('status', 'skipped');
+ return;
+ }
+
+ let content = fs.readFileSync(approvedFile, 'utf8');
+ const approvedList = content
+ .split('\n')
+ .map(line => line.trim().toLowerCase())
+ .filter(line => line && !line.startsWith('#'));
+
+ if (approvedList.includes(prAuthor.toLowerCase())) {
+ console.log(`${prAuthor} is already approved`);
+ core.setOutput('status', 'already');
+ return;
+ }
+
+ content = content.trimEnd() + '\n' + prAuthor + '\n';
+ fs.writeFileSync(approvedFile, content);
+
+ console.log(`Added ${prAuthor} to approved contributors`);
+ core.setOutput('status', 'added');
+
+ - name: Commit and push
+ if: steps.update.outputs.status == 'added'
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add .github/APPROVED_CONTRIBUTORS
+ git diff --staged --quiet || git commit -m "chore: approve merged contributor ${{ github.event.pull_request.user.login }}"
+ git push