aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/approve-contributor.yml
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-01 02:13:30 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-01 02:14:52 +0300
commit472e2b8453160affd05760b22a483b3c9ee100be (patch)
tree3d72f0778c3a3e9f2bc0091d9f07fa4e526c0858 /.github/workflows/approve-contributor.yml
parent8307f2f712293970d80f624594d51e693d711cfb (diff)
chore: route feature intake to discussions
Diffstat (limited to '.github/workflows/approve-contributor.yml')
-rw-r--r--.github/workflows/approve-contributor.yml27
1 files changed, 16 insertions, 11 deletions
diff --git a/.github/workflows/approve-contributor.yml b/.github/workflows/approve-contributor.yml
index 0f66017d..069ef898 100644
--- a/.github/workflows/approve-contributor.yml
+++ b/.github/workflows/approve-contributor.yml
@@ -29,13 +29,18 @@ jobs:
const commenter = context.payload.comment.user.login;
const commentBody = context.payload.comment.body || '';
const approvedFile = '.github/APPROVED_CONTRIBUTORS';
+ const approveMatch = commentBody.match(/(^|\s)\/approve(?:\s+@([A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?))?(?=$|\s)/i);
+ const maintainerPermissions = ['admin', 'maintain', 'write'];
- if (!/(^|\s)\/approve(?=$|\s)/i.test(commentBody)) {
+ if (!approveMatch) {
console.log('Comment does not contain /approve');
core.setOutput('status', 'skipped');
return;
}
+ const approvedUser = approveMatch[2] || issueAuthor;
+ core.setOutput('approved_user', approvedUser);
+
try {
const { data: permissionLevel } = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
@@ -43,8 +48,8 @@ jobs:
username: commenter,
});
- if (permissionLevel.permission !== 'admin') {
- console.log(`${commenter} does not have admin access`);
+ if (!maintainerPermissions.includes(permissionLevel.permission)) {
+ console.log(`${commenter} does not have maintainer access`);
core.setOutput('status', 'skipped');
return;
}
@@ -60,22 +65,22 @@ jobs:
.map(line => line.trim().toLowerCase())
.filter(line => line && !line.startsWith('#'));
- if (approvedList.includes(issueAuthor.toLowerCase())) {
- console.log(`${issueAuthor} is already approved`);
+ if (approvedList.includes(approvedUser.toLowerCase())) {
+ console.log(`${approvedUser} is already approved`);
core.setOutput('status', 'already');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
- body: `@${issueAuthor} is already in the approved contributors list.`,
+ body: `@${approvedUser} is already in the approved contributors list.`,
});
return;
}
- content = content.trimEnd() + '\n' + issueAuthor + '\n';
+ content = content.trimEnd() + '\n' + approvedUser + '\n';
fs.writeFileSync(approvedFile, content);
- console.log(`Added ${issueAuthor} to approved contributors`);
+ console.log(`Added ${approvedUser} to approved contributors`);
core.setOutput('status', 'added');
- name: Commit and push
@@ -86,7 +91,7 @@ jobs:
git config user.name "kangal-bot"
git config user.email "285672167+kangal-bot@users.noreply.github.com"
git add .github/APPROVED_CONTRIBUTORS
- git diff --staged --quiet || git commit -m "chore: approve contributor ${{ github.event.issue.user.login }}"
+ git diff --staged --quiet || git commit -m "chore: approve contributor ${{ steps.update.outputs.approved_user }}"
git push "https://x-access-token:${KANGAL_GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" HEAD:${{ github.event.repository.default_branch }}
- name: Comment on issue
@@ -95,10 +100,10 @@ jobs:
with:
github-token: ${{ secrets.KANGAL_GITHUB_TOKEN }}
script: |
- const issueAuthor = context.payload.issue.user.login;
+ const approvedUser = '${{ steps.update.outputs.approved_user }}';
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
- body: `@${issueAuthor} has been added to the approved contributors list. You can now submit PRs. Thanks for contributing!`,
+ body: `@${approvedUser} has been added to the approved contributors list. You can now submit PRs for maintainer-approved work. Thanks for contributing!`,
});