fix: spærren godtager kun præcis stempellinjen

canonical() fjernede enhver linje med godkendt: fra det signerede, og Zola kan lukke
frontmatter midt på en linje. Sammen gav det plads til ugodkendt tekst i et gyldigt
stemplet indlæg. Nu er kun den linje tjenesten skriver usigneret, og kun én gang.

Bruger runnerens python3 i stedet for setup-python, som kun har builds til Ubuntu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Asger Geel Weirsøe
2026-11-01 16:47:08 +01:00
co-authored by Claude Opus 5.5
parent aeb7c88949
commit 41e7dacae6
3 changed files with 19 additions and 8 deletions
+10 -3
View File
@@ -9,13 +9,20 @@ import re
BLOG = "content/blog"
# Præcis den linje tjenesten skriver. Alt andet i filen er signeret, også linjer der
# ligner stemplet. Zola og dette script kan være uenige om hvor frontmatter slutter, så
# en løsere regel ville give plads til usigneret tekst.
STAMP_LINE = re.compile(r' godkendt: "(v1:[0-9a-f]{64})"')
def canonical(rel, text, assets=()):
"""assets: [(sti, sha256-hex)] for billederne i bundlen, sorteret efter sti."""
lines = text.replace("\r\n", "\n").split("\n")
if lines and lines[0] == "---" and "---" in lines[1:]:
end = lines.index("---", 1)
lines = [l for i, l in enumerate(lines) if not (0 < i < end and re.match(r"\s*godkendt:", l))]
hit = next((i for i in range(1, end) if STAMP_LINE.fullmatch(lines[i])), None)
if hit:
del lines[hit]
return f"{rel}\n" + "\n".join(lines) + "".join(f"\n@asset {p} {h}" for p, h in assets)
@@ -56,6 +63,6 @@ def stamp_of(text):
if end < 0:
return None, False
fm = lines[1:end]
g = next((l for l in fm if re.match(r"\s*godkendt:", l)), None)
g = next((m for m in map(STAMP_LINE.fullmatch, fm) if m), None)
draft = any(re.fullmatch(r"draft:\s*true\s*", l) for l in fm)
return (re.sub(r"^\s*godkendt:\s*", "", g).strip("'\"") if g else None), draft
return (g[1] if g else None), draft