name: check-CLA
on: [pull_request_target]
jobs:
  check-cla:
    runs-on: ubuntu-latest
    env:
      PR_NUMBER: ${{ github.event.number }}
    steps:
      - name: check-CLA
        run: |
          import urllib.request
          import json
          import itertools
          import sys
          def jsonRequest(url, data={}):
              req = urllib.request.Request(url,
                                           headers={'Content-Type': 'application/json'},
                                           data=json.dumps(data).encode('utf-8') if data else None)
              with urllib.request.urlopen(req) as response:
                  return json.loads(response.read().decode('utf-8'))
          prCommits = jsonRequest('https://api.github.com/repos/juce-framework/JUCE/pulls/${{ github.event.number }}/commits')
          authors = map(lambda commit: [commit['author']['login'], commit['committer']['login']], prCommits)
          uniqueAuthors = list(set(itertools.chain.from_iterable(authors)))
          print(f'\nPR authors: {", ".join(uniqueAuthors)}')
          claResult = jsonRequest('https://cla.juce.com/check', {'logins': uniqueAuthors})
          unsignedLogins = claResult['unsigned']
          if (len(unsignedLogins) != 0):
              print(f'\nThe following GitHub users need to sign the JUCE CLA: {", ".join(unsignedLogins)}\n\nPlease go to https://cla.juce.com to sign the JUCE Contributor Licence Agreement\n')
              sys.exit(1)
        shell: python
