feat: add core modules (config, state, diff, apply, health)

This commit is contained in:
2026-06-11 22:50:58 +02:00
parent a4e86e837c
commit ae1cbe27a4
5 changed files with 442 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
import os
from dataclasses import dataclass
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Unraid-Sync/1.0"}
@dataclass
class Config:
ics_url: str
baikal_url: str
baikal_user: str
baikal_pass: str
sync_frequency: int
def validate() -> Config:
errors = []
ics_url = os.environ.get("ICS_URL")
if not ics_url:
errors.append("ICS_URL is required")
baikal_url = os.environ.get("BAIKAL_URL")
if not baikal_url:
errors.append("BAIKAL_URL is required")
baikal_user = os.environ.get("BAIKAL_USER")
if not baikal_user:
errors.append("BAIKAL_USER is required")
baikal_pass = os.environ.get("BAIKAL_PASS")
if not baikal_pass:
errors.append("BAIKAL_PASS is required")
sync_freq_raw = os.environ.get("SYNC_FREQUENCY", "5")
try:
sync_frequency = int(sync_freq_raw)
if sync_frequency <= 0:
raise ValueError
except ValueError:
errors.append("SYNC_FREQUENCY must be a positive integer")
if errors:
raise ValueError("\n".join(errors))
return Config(
ics_url=ics_url,
baikal_url=baikal_url,
baikal_user=baikal_user,
baikal_pass=baikal_pass,
sync_frequency=sync_frequency,
)