]> git.ipfire.org Git - thirdparty/pdns.git/blob - build-scripts/changelog-from-pr.py
Merge pull request #5978 from rgacogne/rec-negcache-referral-to-unsigned
[thirdparty/pdns.git] / build-scripts / changelog-from-pr.py
1 #!/usr/bin/env python3
2
3 import requests
4 import sys
5 import argparse
6 import re
7
8 argp = argparse.ArgumentParser()
9 argp.add_argument('--oneline', action='store_true',
10 help='Make one-lined changelog entries (for 4.0 and older)')
11 argp.add_argument('pullrequest', metavar='PULL_REQUEST', nargs='+',
12 help='Make changelogs for these Pull Request #\'s')
13 arguments = argp.parse_args()
14
15 ticket_regex = re.compile(r'(?:[Cc]loses|[Ff]ixes)? #(\d+)')
16
17 out = ''
18 for pr in arguments.pullrequest:
19 if pr[0] == '#':
20 pr = pr[1:]
21 try:
22 res = requests.get('https://api.github.com/repos/PowerDNS/pdns/pulls/'
23 '{}'.format(pr))
24 pr_info = res.json()
25 except (requests.exceptions.HTTPError, ValueError) as e:
26 print(e)
27 sys.exit(1)
28
29 if arguments.oneline:
30 out += '- `#{pr} <{url}>`__: {title}'.format(
31 pr=pr, url=pr_info['html_url'], title=pr_info['title']
32 )
33 else:
34 out += ' .. change::\n' + \
35 ' :tags: XXXXXX\n' + \
36 ' :pullreq: {}\n'.format(pr)
37 tickets = re.findall(ticket_regex, pr_info['body'])
38 if len(tickets):
39 out += ' :tickets: {}\n'.format(', '.join(tickets))
40 out += '\n {}'.format(pr_info['title'].capitalize())
41
42 if pr_info['user']['login'].lower() not in ['ahupowerdns', 'habbie',
43 'pieterlexis', 'rgacogne',
44 'aerique']:
45 try:
46 user_info = requests.get(pr_info['user']['url']).json()
47 except (requests.exceptions.HTTPError, ValueError) as e:
48 print(e)
49 sys.exit(1)
50 out += ' ({})'.format(user_info['name'])
51 out += '\n'
52
53 if not arguments.oneline:
54 out += '\n'
55
56 print(out)