Files
tbd-station-14/Tools/update_changelog.py
Pieter-Jan Briers cca23f2812 Changelog. (#3398)
2021-02-25 09:50:45 +01:00

71 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
import sys
import os
from typing import List, Any
import yaml
import argparse
import datetime
MAX_ENTRIES = 500
HEADER_RE = r"(?::cl:|🆑) *\r?\n(.+)$"
ENTRY_RE = r"^ *[*-]? *(\S[^\n\r]+)\r?$"
def main():
parser = argparse.ArgumentParser()
parser.add_argument("changelog_file")
parser.add_argument("parts_dir")
args = parser.parse_args()
with open(args.changelog_file, "r", encoding="utf-8-sig") as f:
current_data = yaml.safe_load(f)
entries_list: List[Any]
if current_data is None:
entries_list = []
else:
entries_list = current_data["Entries"]
max_id = max(map(lambda e: e["id"], entries_list), default=0)
for partname in os.listdir(args.parts_dir):
if not partname.endswith(".yml"):
continue
partpath = os.path.join(args.parts_dir, partname)
print(partpath)
partyaml = yaml.safe_load(open(partpath, "r", encoding="utf-8-sig"))
author = partyaml["author"]
time = partyaml.get(
"time", datetime.datetime.now(datetime.timezone.utc).isoformat()
)
changes = partyaml["changes"]
max_id += 1
new_id = max_id
entries_list.append(
{"author": author, "time": time, "changes": changes, "id": new_id}
)
os.remove(partpath)
print(f"Have {len(entries_list)} changelog entries")
entries_list.sort(key=lambda e: e["id"])
overflow = len(entries_list) - MAX_ENTRIES
if overflow > 0:
print(f"Removing {overflow} old entries.")
entries_list = entries_list[overflow:]
with open(args.changelog_file, "w") as f:
yaml.safe_dump({"Entries": entries_list}, f)
main()