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())
 |