diff --git a/roundtable/config.py b/roundtable/config.py index f6a5e63..4d9832d 100644 --- a/roundtable/config.py +++ b/roundtable/config.py @@ -11,6 +11,17 @@ logger = logging.getLogger(__name__) _SECRET_KEY_FILE = Path("/data/secret.key") +def _env(suffix: str) -> str | None: + """Read ROUNDTABLE_, falling back to FABLEDSCRYER_. + + Allows existing deployments to keep their old env vars working through + the rebrand transition. Remove the fallback once users have migrated. + """ + return os.environ.get(f"ROUNDTABLE_{suffix}") or os.environ.get( + f"FABLEDSCRYER_{suffix}" + ) + + def load_bootstrap(config_path: Path | str | None = None) -> dict[str, str]: """Return the minimum bootstrap config: database_url and secret_key. @@ -33,19 +44,19 @@ def load_bootstrap(config_path: Path | str | None = None) -> dict[str, str]: raw = yaml.safe_load(f) or {} database_url = ( - os.environ.get("FABLEDSCRYER_DATABASE_URL") - or os.environ.get("FABLEDSCRYER_DATABASE__URL") + _env("DATABASE_URL") + or _env("DATABASE__URL") or raw.get("database", {}).get("url") ) if not database_url: raise ValueError( - "Database URL is required. Set FABLEDSCRYER_DATABASE_URL env var " + "Database URL is required. Set ROUNDTABLE_DATABASE_URL env var " "or add 'database.url' to config.yaml." ) secret_key = _resolve_secret_key(raw) plugin_dir = ( - os.environ.get("FABLEDSCRYER_PLUGIN_DIR") + _env("PLUGIN_DIR") or raw.get("plugin_dir", "plugins") ) @@ -58,7 +69,7 @@ def load_bootstrap(config_path: Path | str | None = None) -> dict[str, str]: def _resolve_secret_key(raw: dict) -> str: """Resolve secret_key: env var → file → auto-generate.""" - from_env = os.environ.get("FABLEDSCRYER_SECRET_KEY") or raw.get("secret_key") + from_env = _env("SECRET_KEY") or raw.get("secret_key") if from_env: return from_env diff --git a/roundtable/migrations/env.py b/roundtable/migrations/env.py index 583f994..8785208 100644 --- a/roundtable/migrations/env.py +++ b/roundtable/migrations/env.py @@ -16,18 +16,20 @@ target_metadata = Base.metadata def get_url() -> str: import os, yaml - cfg_path = os.environ.get("FABLEDSCRYER_CONFIG", "config.yaml") + + def _env(suffix: str) -> str | None: + return os.environ.get(f"ROUNDTABLE_{suffix}") or os.environ.get( + f"FABLEDSCRYER_{suffix}" + ) + + cfg_path = _env("CONFIG") or "config.yaml" try: with open(cfg_path) as f: cfg = yaml.safe_load(f) or {} url = cfg.get("database", {}).get("url", "") except FileNotFoundError: url = "" - return ( - os.environ.get("FABLEDSCRYER_DATABASE_URL") - or os.environ.get("FABLEDSCRYER_DATABASE__URL") - or url - ) + return _env("DATABASE_URL") or _env("DATABASE__URL") or url def _resolved_url() -> str: