name: Labeler on: issues: types: [opened] pull_request: types: [opened] jobs: label-priority: runs-on: ubuntu-latest steps: - name: Label New Issue or PR uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | let label = ''; let username = ''; let issueOrPrNumber = 0; if (context.eventName === 'issues') { username = context.payload.issue.user.login; issueOrPrNumber = context.payload.issue.number; } else if (context.eventName === 'pull_request') { username = context.payload.pull_request.user.login; issueOrPrNumber = context.payload.pull_request.number; } try { // Check for Adafruit membership const adafruitResponse = await github.rest.orgs.checkMembershipForUser({ org: 'adafruit', username: username }); if (adafruitResponse.status === 204) { console.log('Adafruit Member'); label = 'Prio Urgent'; } else { // If not a Adafruit member, check if the user is a contributor const collaboratorResponse = await github.rest.repos.checkCollaborator({ owner: context.repo.owner, repo: context.repo.repo, username: username }); if (collaboratorResponse.status === 204) { console.log('Contributor'); label = 'Prio Higher'; } } } catch (error) { console.log(`Error processing user ${username}: ${error.message}`); } if (label !== '') { await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issueOrPrNumber, labels: [label] }); }