Prune card exports whose PNG is gone
Deleting a character in the UI left _text/cards/<Name>.json behind, describing a card that no longer exists. A stale derived file is worse than a missing one because it reads as current -- which is the exact reason the pre-commit hook regenerates _text/ at all, so the script was failing its own premise. Found by testing a deletion rather than reading the code. The write path was obviously correct; the delete path had simply never been written.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"avatar": "none",
|
"avatar": "Aino Vihtanen.png",
|
||||||
"chat": "Aino Vihtanen - 2026-08-12@16h09m13s142ms",
|
"chat": "Aino Vihtanen - 2026-08-13@18h01m20s857ms",
|
||||||
"create_date": "2026-08-12T16:09:13.167Z",
|
"create_date": "2026-08-12T16:09:13.167Z",
|
||||||
"creatorcomment": "",
|
"creatorcomment": "",
|
||||||
"data": {
|
"data": {
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
@@ -92,6 +92,18 @@ def export_cards() -> int:
|
|||||||
json.dump(card, fh, indent=2, ensure_ascii=False, sort_keys=True)
|
json.dump(card, fh, indent=2, ensure_ascii=False, sort_keys=True)
|
||||||
fh.write("\n")
|
fh.write("\n")
|
||||||
n += 1
|
n += 1
|
||||||
|
|
||||||
|
# ⚠ PRUNE EXPORTS WHOSE SOURCE IS GONE. Without this, deleting a character in
|
||||||
|
# the UI left `_text/cards/<Name>.json` behind describing a card that no
|
||||||
|
# longer exists — and it reads as current, which is worse than absent. Found
|
||||||
|
# by testing a deletion rather than by reading the code: the write path was
|
||||||
|
# obviously correct and the delete path was simply never written.
|
||||||
|
live = {f[:-4] + ".json" for f in os.listdir(src)
|
||||||
|
if f.lower().endswith(".png") and not f.startswith("default_")} if os.path.isdir(src) else set()
|
||||||
|
for stale in sorted(set(os.listdir(dst)) - live):
|
||||||
|
if stale.endswith(".json"):
|
||||||
|
os.remove(os.path.join(dst, stale))
|
||||||
|
print(f" pruned _text/cards/{stale} — its PNG is gone")
|
||||||
return n
|
return n
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user