| name: Labeler |
| |
| on: |
| issues: |
| types: [opened] |
| pull_request_target: |
| types: [opened] |
| |
| jobs: |
| label-priority: |
| runs-on: ubuntu-latest |
| permissions: |
| issues: write |
| pull-requests: write |
| 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_target') { |
| username = context.payload.pull_request.user.login; |
| issueOrPrNumber = context.payload.pull_request.number; |
| } |
| |
| // Check if an Adafruit member |
| try { |
| const adafruitResponse = await github.rest.orgs.checkMembershipForUser({ |
| org: 'adafruit', |
| username: username |
| }); |
| |
| if (adafruitResponse.status === 204) { |
| console.log('Adafruit Member'); |
| label = 'Prio Urgent'; |
| } |
| } catch (error) { |
| console.log('Not an Adafruit member'); |
| } |
| |
| // Check if a contributor |
| if (label == '') { |
| try { |
| 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('Not a contributor'); |
| } |
| } |
| |
| if (label !== '') { |
| await github.rest.issues.addLabels({ |
| owner: context.repo.owner, |
| repo: context.repo.repo, |
| issue_number: issueOrPrNumber, |
| labels: [label] |
| }); |
| } |