treefmt / nix fmt (pull_request) Successful in 6s
test ebook search / test-ebook-search (pull_request) Successful in 39s
pytest / pytest (pull_request) Successful in 40s
build_systems / build-brain (pull_request) Successful in 1m0s
build_systems / build-bob (pull_request) Successful in 1m2s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m33s
build_systems / build-jeeves (pull_request) Successful in 2m25s
test ebook search / test-ebook-search (push) Successful in 35s
build_systems / build-brain (push) Successful in 37s
build_systems / build-bob (push) Successful in 37s
build_systems / build-jeeves (push) Successful in 2m17s
treefmt / nix fmt (push) Successful in 5s
pytest / pytest (push) Successful in 29s
build_systems / build-rhapsody-in-green (push) Successful in 49s
- implement FastAPI and HTMX lobby and game interfaces - support up to four human and AI-controlled players - add configurable rules, victory conditions, and expansion modules - support validated JSON cards, patrons, objectives, and outposts
26 lines
725 B
Python
26 lines
725 B
Python
"""Runtime configuration loaded from environment variables."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class GemsConfig(BaseSettings):
|
|
"""Configure persistence, public URLs, cookies, and the HTTP server."""
|
|
|
|
model_config = SettingsConfigDict(env_prefix="GEMS_")
|
|
|
|
database_path: Path = Path(".gems/gems.sqlite3")
|
|
key_path: Path = Path(".gems/instance.key")
|
|
public_origin: str = "http://127.0.0.1:8082"
|
|
secure_cookies: bool = False
|
|
host: str = "127.0.0.1"
|
|
port: int = 8082
|
|
|
|
|
|
def load_config() -> GemsConfig:
|
|
"""Load Gems configuration from defaults and environment variables."""
|
|
return GemsConfig()
|