Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| import os | |
| import tomllib | |
| from pathlib import Path | |
| from typing import Any | |
| def parse_bool(raw: str) -> bool: | |
| return raw.strip().lower() in {"1", "true", "yes", "on"} | |
| def quote_string(value: str) -> str: | |
| escaped = value.replace("\\", "\\\\").replace('"', '\\"') | |
| return f'"{escaped}"' | |
| def format_toml_value(value: Any) -> str: | |
| if isinstance(value, bool): | |
| return "true" if value else "false" | |
| if isinstance(value, (int, float)): | |
| return str(value) | |
| if isinstance(value, list): | |
| return "[" + ",".join(format_toml_value(item) for item in value) + "]" | |
| return quote_string(str(value)) | |
| def load_existing_config(path: Path) -> dict[str, Any]: | |
| if not path.exists(): | |
| return {} | |
| with path.open("rb") as handle: | |
| return tomllib.load(handle) | |
| def update_section(target: dict[str, Any], section: str, key: str, env_name: str, *, as_bool: bool = False) -> None: | |
| raw = os.getenv(env_name) | |
| if raw is None: | |
| return | |
| sec = target.setdefault(section, {}) | |
| sec[key] = parse_bool(raw) if as_bool else raw | |
| def write_config(path: Path, config: dict[str, Any]) -> None: | |
| lines: list[str] = [] | |
| for section, items in config.items(): | |
| if not isinstance(items, dict): | |
| continue | |
| lines.append(f"[{section}]") | |
| for key, value in items.items(): | |
| lines.append(f"{key} = {format_toml_value(value)}") | |
| lines.append("") | |
| path.write_text("\n".join(lines).strip() + "\n", encoding="utf-8") | |
| def main() -> None: | |
| data_dir = Path(os.getenv("DATA_DIR", "/app/data")) | |
| config_path = data_dir / "config.toml" | |
| data_dir.mkdir(parents=True, exist_ok=True) | |
| config = load_existing_config(config_path) | |
| update_section(config, "app", "api_key", "GROK2API_API_KEYS") | |
| update_section(config, "app", "app_key", "GROK2API_APP_KEY") | |
| update_section(config, "app", "function_key", "GROK2API_FUNCTION_KEY") | |
| update_section(config, "app", "function_enabled", "GROK2API_FUNCTION_ENABLED", as_bool=True) | |
| update_section(config, "app", "app_url", "GROK2API_APP_URL") | |
| update_section(config, "proxy", "base_proxy_url", "GROK2API_PROXY_BASE_URL") | |
| update_section(config, "proxy", "asset_proxy_url", "GROK2API_PROXY_ASSET_URL") | |
| update_section(config, "proxy", "cf_clearance", "GROK2API_CF_CLEARANCE") | |
| update_section(config, "proxy", "cf_cookies", "GROK2API_CF_COOKIES") | |
| write_config(config_path, config) | |
| if __name__ == "__main__": | |
| main() | |