forked from miguelgrinberg/python-socketio
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmkchangelog.py
More file actions
49 lines (41 loc) · 1.73 KB
/
Copy pathmkchangelog.py
File metadata and controls
49 lines (41 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import datetime
import re
import sys
import git
URL = 'https://github.com/miguelgrinberg/python-socketio'
merges = {}
def format_message(commit):
if commit.message.startswith('Version '):
return ''
if '#nolog' in commit.message:
return ''
if commit.message.startswith('Merge pull request'):
pr = commit.message.split('#')[1].split(' ')[0]
message = ' '.join([line for line in [line.strip() for line in commit.message.split('\n')[1:]] if line])
merges[message] = pr
return ''
if commit.message.startswith('Release '):
return '\n**{message}** - {date}\n'.format(
message=commit.message.strip(),
date=datetime.datetime.fromtimestamp(commit.committed_date).strftime('%Y-%m-%d'))
message = ' '.join([line for line in [line.strip() for line in commit.message.split('\n')] if line])
if message in merges:
message += ' #' + merges[message]
message = re.sub('\\(.*(#[0-9]+)\\)', '\\1', message)
message = re.sub('Fixes (#[0-9]+)', '\\1', message)
message = re.sub('fixes (#[0-9]+)', '\\1', message)
message = re.sub('#([0-9]+)', '[#\\1]({url}/issues/\\1)'.format(url=URL), message)
message += ' ([commit]({url}/commit/{sha}))'.format(url=URL, sha=str(commit))
if commit.author.name != 'Miguel Grinberg':
message += ' (thanks **{name}**!)'.format(name=commit.author.name)
return '- ' + message
def main(all=False):
repo = git.Repo()
for commit in repo.iter_commits():
if not all and commit.message.startswith('Release '):
break
message = format_message(commit)
if message:
print(message)
if __name__ == '__main__':
main(all=len(sys.argv) > 1 and sys.argv[1] == 'all')