37 lines
1.0 KiB
Python
Executable File
37 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
"""Extracts commit message for the last release from NEWS.md file.
|
|
"""
|
|
|
|
from itertools import dropwhile
|
|
import sys
|
|
|
|
with open('NEWS.md') as f:
|
|
contents = f.readlines()
|
|
|
|
if contents[0].startswith('## '):
|
|
name = contents[0][3:]
|
|
contents = contents[1:]
|
|
elif contents[1].startswith('---'):
|
|
name = contents[0]
|
|
contents = contents[2:]
|
|
else:
|
|
raise ValueError("Can't find release name")
|
|
name = name.strip()
|
|
|
|
print("Release", name)
|
|
# git wants a single newline between commit title and message body
|
|
print()
|
|
# meanwhile, markdown ignores newlines after a title
|
|
contents = dropwhile(lambda x: x.strip() == '', contents)
|
|
|
|
# Need to look up forward
|
|
contents = list(contents)
|
|
|
|
for line, nextline in zip(contents, contents[1:] + ['']):
|
|
if nextline.startswith('---') or line.startswith('## '):
|
|
break
|
|
elif nextline.startswith('===') or line.startswith('# '):
|
|
raise ValueError("Encountered title instead of release section")
|
|
print(line.strip())
|