forked from lix-project/lix
alois31
72db9cd67b
The insertion marker comment broke the list into two parts, the first
containing only the link to the upcoming release notes and the second the
past releases. This confused the generator, leading to the first part being
discarded. Indent the marker comment so that it's syntactically part of the
preceding item, and in particular doesn't split the list any more.
Change-Id: I357c51bb03e4e0d79a76d30158615fd9eda95ea8
82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
from pathlib import Path
|
|
import subprocess
|
|
import datetime
|
|
|
|
from .version import MAJOR, VERSION, RELEASE_NAME
|
|
|
|
MANUAL = Path('doc/manual')
|
|
RELEASE_NOTES_BASE = MANUAL / 'src/release-notes'
|
|
VERSION_RL = RELEASE_NOTES_BASE / f'rl-{MAJOR}.md'
|
|
SUMMARY = MANUAL / 'src/SUMMARY.md'
|
|
|
|
def add_to_summary(date: str):
|
|
# N.B: This kind of duplicates gitutils.is_maintenance_branch, but it's a more clear
|
|
# check that allows potentially releasing a -rc without release notes being
|
|
# moved, then in .0 actually move the release notes in place.
|
|
if VERSION_RL.exists():
|
|
return
|
|
|
|
MARKER = ' <!-- RELENG-AUTO-INSERTION-MARKER'
|
|
|
|
new_lines = []
|
|
for line in SUMMARY.read_text().splitlines():
|
|
new_lines.append(line)
|
|
if MARKER in line:
|
|
indent, _, _ = line.partition(MARKER)
|
|
new_lines.append(f'{indent}- [Lix {MAJOR} ({date})](release-notes/rl-{MAJOR}.md)')
|
|
|
|
# make pre-commit happy about one newline
|
|
text = '\n'.join(new_lines).rstrip()
|
|
text += '\n'
|
|
SUMMARY.write_text(text)
|
|
|
|
def build_release_notes_to_file():
|
|
date = datetime.datetime.now().strftime('%Y-%m-%d')
|
|
add_to_summary(date)
|
|
|
|
print('[+] Preparing release notes')
|
|
RELEASE_NOTES_PATH = Path('doc/manual/rl-next')
|
|
|
|
if RELEASE_NOTES_PATH.is_dir():
|
|
notes_body = subprocess.check_output(['build-release-notes', '--change-authors', 'doc/manual/change-authors.yml', RELEASE_NOTES_PATH]).decode()
|
|
else:
|
|
# I guess nobody put release notes on their changes?
|
|
print('[-] Warning: seemingly missing any release notes, not worrying about it')
|
|
notes_body = ''
|
|
|
|
rl_path = Path(RELEASE_NOTES_BASE / f'rl-{MAJOR}.md')
|
|
|
|
existing_rl = ''
|
|
try:
|
|
with open(rl_path, 'r') as fh:
|
|
existing_rl = fh.read()
|
|
except FileNotFoundError:
|
|
pass
|
|
|
|
minor_header = f'# Lix {VERSION} ({date})'
|
|
|
|
header = f'# Lix {MAJOR} "{RELEASE_NAME}"'
|
|
if existing_rl.startswith(header):
|
|
# strip the header off for minor releases
|
|
lines = existing_rl.splitlines()
|
|
header = lines[0]
|
|
existing_rl = '\n'.join(lines[1:])
|
|
else:
|
|
header += f' ({date})\n\n'
|
|
|
|
header += '\n' + minor_header + '\n'
|
|
|
|
notes = header
|
|
notes += notes_body
|
|
notes += "\n\n"
|
|
notes += existing_rl
|
|
|
|
# make pre-commit happy about one newline
|
|
notes = notes.rstrip()
|
|
notes += "\n"
|
|
|
|
with open(rl_path, 'w') as fh:
|
|
fh.write(notes)
|
|
|
|
return rl_path
|