fix(release-plugin): Regex — .* greedy mit DOTALL schluckt bis EOF
Mit re.DOTALL matcht .* auch Newlines. Kombination mit (?:\s+.*)?$\n führte dazu, dass die erste Version-Zeile bis zum Dateiende gefressen wurde und Capture-Group leer blieb (0 Zeichen). Fix: .* durch [^\n]* ersetzen, damit erste Zeile genau auf eine Zeile begrenzt ist. Gilt für beide Changelog-Parser (Block-Extraktion und entry_pat in readme.txt-Generator).
This commit is contained in:
@@ -168,10 +168,11 @@ jobs:
|
||||
version = os.environ["VERSION"]
|
||||
with open("CHANGELOG.md", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
# "## v<version>" optional gefolgt von " — Datum" und beliebigem Suffix,
|
||||
# Inhalt bis zum nächsten "## v<x.y.z>" oder einer "---"-Trennzeile oder EOF.
|
||||
# "## v<version>" gefolgt von beliebigem Rest der Zeile (auch "— Datum"),
|
||||
# Inhalt ab nächster Zeile bis zum nächsten "## v<x.y.z>" oder "---" oder EOF.
|
||||
# [^\n]* statt .*, damit die erste Zeile nicht mit DOTALL bis EOF gefressen wird.
|
||||
pat = re.compile(
|
||||
r"^##\s+v" + re.escape(version) + r"(?:\s+.*)?$\n(.*?)(?=^##\s+v\d|^---\s*$|\Z)",
|
||||
r"^##\s+v" + re.escape(version) + r"[^\n]*\n(.*?)(?=^##\s+v\d|^---\s*$|\Z)",
|
||||
re.MULTILINE | re.DOTALL,
|
||||
)
|
||||
m = pat.search(content)
|
||||
@@ -229,9 +230,10 @@ jobs:
|
||||
readme_path = pathlib.Path(sys.argv[1])
|
||||
changelog_path = pathlib.Path(sys.argv[2])
|
||||
|
||||
# CHANGELOG.md parsen: Einträge "## v<x.y.z> — <Datum?>" bis zum nächsten "## v…" oder "---" oder EOF
|
||||
# CHANGELOG.md parsen: Einträge "## v<x.y.z> — <Datum?>" bis zum nächsten "## v…" oder "---" oder EOF.
|
||||
# [^\n]* für die erste Zeile, damit DOTALL nicht greedy über Zeilen frisst.
|
||||
entry_pat = re.compile(
|
||||
r"^##\s+v(\d+\.\d+\.\d+)(?:\s+—\s+(\S+))?(?:\s+.*)?$\n(.*?)(?=^##\s+v\d|^---\s*$|\Z)",
|
||||
r"^##\s+v(\d+\.\d+\.\d+)(?:\s+—\s+(\S+))?[^\n]*\n(.*?)(?=^##\s+v\d|^---\s*$|\Z)",
|
||||
re.MULTILINE | re.DOTALL,
|
||||
)
|
||||
content = changelog_path.read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user