import os from dataclasses import dataclass @dataclass class Config: discord_token: str guild_id: int inbox_channel_id: int triage_role_id: int backend_base_url: str web_base_url: str google_voice_imap_host: str google_voice_imap_user: str google_voice_imap_password: str bh_email_imap_host: str bh_email_imap_user: str bh_email_imap_password: str personal_email_imap_host: str personal_email_imap_user: str personal_email_imap_password: str def load_config() -> Config: def env(name: str) -> str: value = os.environ.get(name) if not value: raise RuntimeError(f"Missing required env var: {name}") return value return Config( discord_token=env("CHORUS_DISCORD_TOKEN"), guild_id=int(env("CHORUS_GUILD_ID")), inbox_channel_id=int(env("CHORUS_INBOX_CHANNEL_ID")), triage_role_id=int(env("CHORUS_TRIAGE_ROLE_ID")), backend_base_url=env("CHORUS_BACKEND_BASE_URL"), web_base_url=os.environ.get("CHORUS_WEB_BASE_URL", "https://chorus.circuitforge.tech"), google_voice_imap_host=env("CHORUS_GVOICE_IMAP_HOST"), google_voice_imap_user=env("CHORUS_GVOICE_IMAP_USER"), google_voice_imap_password=env("CHORUS_GVOICE_IMAP_PASSWORD"), bh_email_imap_host=env("CHORUS_BH_EMAIL_IMAP_HOST"), bh_email_imap_user=env("CHORUS_BH_EMAIL_IMAP_USER"), bh_email_imap_password=env("CHORUS_BH_EMAIL_IMAP_PASSWORD"), personal_email_imap_host=env("CHORUS_PERSONAL_EMAIL_IMAP_HOST"), personal_email_imap_user=env("CHORUS_PERSONAL_EMAIL_IMAP_USER"), personal_email_imap_password=env("CHORUS_PERSONAL_EMAIL_IMAP_PASSWORD"), )