31 lines
1.5 KiB
YAML
31 lines
1.5 KiB
YAML
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
|