"add Maintainer label" job via on open workflow

26c4d231a8c6310fd7afd72bbc11d475cd72c722

Wolfsblvt <wolfsblvt@gmail.com>

3 files changed, +57 -5Ignore whitespace
.github/workflows/issues-close-stale.yml β†’ .github/workflows/job-close-stale.yml+3 -4
@@ -1,4 +1,4 @@
11name: 🎯 Close Stale Issues/PRs Job
22
33on:
44 workflow_dispatch:
@@ -7,12 +7,12 @@ on:
77
88jobs:
99 close-stale:
1010 name: Close Stale Issues/PRs Job
1111 runs-on: ubuntu-latest
1212
1313 steps:
1414 # Comment on, then close issues that haven't been updated for ages
1515 - name: Mark Issues/PRs without Activity
1616 # Close Stale Issues and PRs
1717 # https://github.com/marketplace/actions/close-stale-issues
1818 uses: actions/stale@v9
@@ -61,4 +61,3 @@ jobs:
6161 stale-issue-label: 'πŸ›‘ No Response'
6262 close-issue-label: 'πŸ•ΈοΈ Inactive'
6363 exempt-issue-labels: 'πŸ“Œ Keep Open'
64- exempt-pr-labels: 'πŸ“Œ Keep Open'
.github/workflows/issues-close-handler.yml β†’ .github/workflows/on-close-handler.yml+4 -1
@@ -1,13 +1,16 @@
11name: 🎯 Issues/PRs On Close Handler
2+
23on:
34 issues:
45 types: [closed]
56 pull_request_target:
67 types: [closed]
8+
79jobs:
810 remove-labels:
911 name: Remove Pending Labels on Close
1012 runs-on: ubuntu-latest
13+
1114 steps:
1215 - name: Remove Pending Labels on Close
1316 # πŸ€– Issues Helper
.github/workflows/on-open-handler.yml+50 -0
@@ -0,0 +1,50 @@
1+name: 🎯 Issues/PRs Open Handler
2+
3+on:
4+ issues:
5+ types: [opened]
6+ pull_request_target:
7+ types: [opened]
8+
9+jobs:
10+ label-maintainer:
11+ name: Label if Author is a Repo Maintainer
12+ runs-on: ubuntu-latest
13+
14+ steps:
15+ - name: Label if Author is a Repo Maintainer
16+ # GitHub Script
17+ # https://github.com/marketplace/actions/github-script
18+ uses: actions/github-script@v6
19+ with:
20+ script: |
21+ // Get basic info
22+ const { owner, repo } = context.repo;
23+ const payload = context.payload;
24+ // Determine if it's an issue or a pull request
25+ const eventData = payload.issue || payload.pull_request;
26+ const username = eventData.user.login;
27+ const issue_number = eventData.number;
28+
29+ // Get the collaborator permission level for the user
30+ const { data: permissionData } = await github.repos.getCollaboratorPermissionLevel({
31+ owner,
32+ repo,
33+ username,
34+ });
35+
36+ const permission = permissionData.permission;
37+ console.log(`User ${username} has permission level: ${permission}`);
38+
39+ // Check if user is an admin or has maintain permissions
40+ if (['admin', 'maintain'].includes(permission)) {
41+ console.log(`Adding "Maintainer" label to issue/PR #${issue_number}`);
42+ await github.issues.addLabels({
43+ owner,
44+ repo,
45+ issue_number,
46+ labels: ['Maintainer'],
47+ });
48+ } else {
49+ console.log(`User ${username} is not a repo maintainer.`);
50+ }