47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
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"),
|
|
)
|