- .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/bremse_echtlauf.py - .vault-tools/trading-plattform-pruefung/browser_w.py - .vault-tools/trading-plattform-pruefung/generalprobe_echtlauf.py - .vault-tools/trading-plattform-pruefung/ha_aktiv_setzen.py - .vault-tools/trading-plattform-pruefung/handelstag_auswertung.py - .vault-tools/trading-plattform-pruefung/hausmelder_echtlauf.py - .vault-tools/trading-plattform-pruefung/killswitch_simulation.py - .vault-tools/trading-plattform-pruefung/killswitch_simulation_mutanten.py - .vault-tools/trading-plattform-pruefung/latenz_auswertung.py - .vault-tools/trading-plattform-pruefung/s1_alpaca_lesen.py - .vault-tools/trading-plattform-pruefung/s5_echtlauf.py - … und 2 weitere Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
"""Setzt [homeassistant] aktiv in config/secrets.toml auf true oder false. Gibt nie einen Wert der Datei aus.
|
|
|
|
Aufruf: python ha_aktiv_setzen.py <secrets.toml> <true|false>
|
|
Geaendert wird genau eine Zeile im Abschnitt [homeassistant]; alles andere bleibt Byte fuer Byte stehen.
|
|
"""
|
|
|
|
import sys
|
|
import tomllib
|
|
from pathlib import Path
|
|
|
|
pfad = Path(sys.argv[1])
|
|
ziel = sys.argv[2]
|
|
assert ziel in ("true", "false")
|
|
|
|
roh = pfad.read_bytes()
|
|
text = roh.decode("utf-8")
|
|
zeilenende = "\r\n" if "\r\n" in text else "\n"
|
|
zeilen = text.split(zeilenende)
|
|
|
|
im_abschnitt = False
|
|
treffer = []
|
|
for nummer, zeile in enumerate(zeilen):
|
|
kern = zeile.strip()
|
|
if kern.startswith("["):
|
|
im_abschnitt = kern == "[homeassistant]"
|
|
continue
|
|
if im_abschnitt and kern.split("=")[0].strip() == "aktiv":
|
|
treffer.append(nummer)
|
|
|
|
if len(treffer) != 1:
|
|
print(f"ABBRUCH: {len(treffer)} Zeilen 'aktiv' im Abschnitt [homeassistant] gefunden, erwartet genau eine")
|
|
sys.exit(2)
|
|
|
|
vorher = tomllib.loads(text)["homeassistant"]["aktiv"]
|
|
zeilen[treffer[0]] = f"aktiv = {ziel}"
|
|
neu = zeilenende.join(zeilen)
|
|
nachher = tomllib.loads(neu)
|
|
# Die Probe vor dem Schreiben: Die Datei bleibt gueltiges TOML, und nur dieser eine Wert aendert sich.
|
|
alt = tomllib.loads(text)
|
|
alt["homeassistant"]["aktiv"] = nachher["homeassistant"]["aktiv"]
|
|
assert alt == nachher, "mehr als ein Wert haette sich geaendert"
|
|
pfad.write_bytes(neu.encode("utf-8"))
|
|
print(f"[homeassistant] aktiv: {vorher} -> {nachher['homeassistant']['aktiv']}; Abschnitte {sorted(nachher)}; "
|
|
f"Laenge der Adresse {len(nachher['homeassistant'].get('webhook_url', ''))}")
|