Marty Oehme
dcf367b385
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import re
|
|
|
|
## Extracts the version and newest changes from a semantic changelog.
|
|
#
|
|
# Important, it only works with three-parted version numbers
|
|
# a-la 1.2.3 or 313.01.1888 -- needs \d.\d.\d to work.
|
|
#
|
|
# The version number and changeset will be put in `NEWEST_VERSION.md`
|
|
# and `NEWEST_CHANGES.md` respectively, for further use in releases.
|
|
OUTPUT_FILE_VERSION = "NEWEST_VERSION.md"
|
|
OUTPUT_FILE_CHANGES = "NEWEST_CHANGES.md"
|
|
|
|
|
|
def getVersion(file):
|
|
for line in file:
|
|
m = re.match(r"^## \[(\d+\.\d+\.\d+)\]", line)
|
|
if m and m.group(1):
|
|
return m.group(1)
|
|
|
|
|
|
def getSection(file):
|
|
inRecordingMode = False
|
|
for line in file:
|
|
if not inRecordingMode:
|
|
if re.match(r"^## \[\d+\.\d+\.\d+\]", line):
|
|
inRecordingMode = True
|
|
elif re.match(r"^## \[\d+\.\d+\.\d+\]", line):
|
|
inRecordingMode = False
|
|
break
|
|
elif re.match(r"^$", line):
|
|
pass
|
|
else:
|
|
yield line
|
|
|
|
|
|
def toFile(fname, content):
|
|
file = open(fname, "w")
|
|
file.write(content)
|
|
file.close()
|
|
|
|
|
|
with open("CHANGELOG.md") as file:
|
|
title = getVersion(file)
|
|
print(title)
|
|
toFile(OUTPUT_FILE_VERSION, title)
|
|
|
|
with open("CHANGELOG.md") as file:
|
|
newest_changes_gen = getSection(file)
|
|
newest_changes = ""
|
|
for line in newest_changes_gen:
|
|
newest_changes += line
|
|
print("[Extracted Changelog]")
|
|
print(newest_changes)
|
|
toFile(OUTPUT_FILE_CHANGES, newest_changes)
|
|
|
|
file.close()
|