Synk fra arbeidsrepoet

This commit is contained in:
Vaultnord
2026-08-31 21:46:28 +00:00
parent 6a7315ba97
commit c20ce47064
+21 -3
View File
@@ -536,14 +536,32 @@ def mot_binær(sti: Path) -> None:
data = sti.read_bytes()
finnes = {m.group(1).decode()
for m in re.finditer(rb"email/([a-z0-9_]+)(?=[A-Z{])", data)}
# Partialene har ingen egen tekst; de innebygde malene bruker dem, våre ikke.
finnes -= {"email_header", "email_footer", "email_footer_text"}
mangler = finnes - set(MALER)
mangler = _mangler(finnes)
if mangler:
raise SystemExit("maler.py: serveren har maler vi ikke har skrevet: "
+ ", ".join(sorted(mangler)))
# Partialene har ingen egen tekst; de innebygde malene bruker dem, våre ikke.
PARTIALER = {"email_header", "email_footer", "email_footer_text"}
def _mangler(finnes: set[str]) -> set[str]:
"""Hvilke av serverens maler vi ikke har skrevet.
Navnene plukkes ut av en binærfil, så treffene inneholder avkuttede biter -
«sm» der det står smtp_test, «we» der det står welcome. Et navn som bare er
starten på et annet navn er et slikt fragment, ikke en mal.
Prisen er at en oppstrøms mal som heter nøyaktig starten på en vi allerede
har, ville sluppet gjennom. Det har ikke skjedd, og alternativet - å la
fragmentene stoppe hvert eneste bygg - er verre."""
kjente = finnes | set(MALER)
ekte = {n for n in finnes - PARTIALER
if not any(k != n and k.startswith(n) for k in kjente)}
return ekte - set(MALER)
def skriv(ut: Path) -> int:
n = 0
for navn, per_språk in MALER.items():