goon/scripts/_patch_manifest.py
goon-foss a4486980a4 style: myslniki em/en z komentarzy i docstringow (calosc repo)
1745 wystapien w 291 plikach (backend, scripts, mobile). Dominowal jeden ksztalt,
' — ' laczace zdania, wiec poszedl przecinek; myslnik otwierajacy mysl zdjety;
zakresy 0–5 i A–Z na dywiz.

Podzial komentarz/kod robil skaner stanow, nie regex, zeby nie ruszyc myslnika
stojacego w stringu albo w wyrazeniu regularnym. Potwierdzone maszynowo: po wycieciu
komentarzy z wersji HEAD i z dysku obie sa identyczne we wszystkich 291 plikach,
czyli poza komentarzami nie zmienilo sie nic. 233 pliki .py parsuja sie bez bledu,
tsc ma te same 11 bledow w tych samych 3 plikach co przed zmiana.

Dwie rzeczy wymagaly poprawki po automacie: wyrownane listy definicji, gdzie myslnik
byl separatorem kolumny (37 miejsc, kolumna przywrocona), i trzy przeniesienia mysli
do nowej linii, gdzie zostawal wiszacy przecinek na poczatku (poprawione recznie).

Bundla nie republikuje: Hermes i tak nie niesie komentarzy, wiec dla uzytkownika
to zero zmiany.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 11:51:57 +02:00

54 lines
1.4 KiB
Python

"""One-shot: napraw manifest.json dla istniejącego OTA update'u.
Bugs:
1. Windows publish wpisywał `assets\<hash>` (os.sep) do URL'i.
2. URL hosta ustawiony na 'goon-app.invalid:8443' który nie ma DNS,
mobile nie pobierze assetów. Właściwy host: api.goon-foss.org (port 443).
Normalizujemy `\` → `/` i podmieniamy hosta na CORRECT_HOST.
"""
import json
import sys
CORRECT_HOST_PREFIX = "https://api.goon-foss.org/expo-updates/asset"
WRONG_HOST_PREFIXES = [
"https://goon-app.invalid:8443/expo-updates/asset",
]
def fix_url(u: str) -> tuple[str, bool]:
new = u.replace("\\", "/")
for wrong in WRONG_HOST_PREFIXES:
if new.startswith(wrong):
new = new.replace(wrong, CORRECT_HOST_PREFIX, 1)
break
return new, new != u
def main() -> int:
if len(sys.argv) != 2:
print("usage: _patch_manifest.py <manifest.json path>")
return 1
path = sys.argv[1]
m = json.load(open(path))
fixed = 0
for a in m.get("assets", []):
new, ch = fix_url(a["url"])
if ch:
a["url"] = new
fixed += 1
la = m.get("launchAsset", {})
if "url" in la:
new, ch = fix_url(la["url"])
if ch:
la["url"] = new
fixed += 1
with open(path, "w") as f:
json.dump(m, f, indent=2)
print(f"patched {fixed} URLs in {path}")
return 0
if __name__ == "__main__":
sys.exit(main())