pachet's picture
Add session MIDI ZIP export
eacc693
Raw
History Blame Contribute Delete
1.1 kB
from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
import os
BACKEND_DIR = Path(__file__).resolve().parents[1]
PROJECT_DIR = BACKEND_DIR.parent
FRONTEND_DIR = PROJECT_DIR / "frontend"
DATA_DIR = BACKEND_DIR / "data"
@dataclass(frozen=True)
class Settings:
app_name: str
frontend_dir: Path
db_path: Path
session_export_dir: Path
seed_midi_file: Path | None
seed_midi_folder: Path | None
def _env_path(name: str) -> Path | None:
raw = os.getenv(name)
if not raw:
return None
return Path(raw).expanduser()
def load_settings() -> Settings:
return Settings(
app_name=os.getenv("CONTINUATOR_APP_NAME", "Web Continuator"),
frontend_dir=FRONTEND_DIR,
db_path=_env_path("CONTINUATOR_DB_PATH") or (DATA_DIR / "continuator.sqlite3"),
session_export_dir=_env_path("CONTINUATOR_SESSION_EXPORT_DIR")
or (DATA_DIR / "session_midi_exports"),
seed_midi_file=_env_path("CONTINUATOR_SEED_MIDI_FILE"),
seed_midi_folder=_env_path("CONTINUATOR_SEED_MIDI_FOLDER"),
)