import os
import sys
from pathlib import Path

# Ensure execution always runs under project's virtual environment (.venv)
project_root = Path(__file__).resolve().parent
venv_python = project_root / ".venv" / "Scripts" / "python.exe"
if venv_python.exists() and Path(sys.executable).resolve() != venv_python.resolve():
    print(f"[DSCons] Switching interpreter to project virtualenv: {venv_python}")
    os.execv(str(venv_python), [str(venv_python)] + sys.argv)

os.chdir(str(project_root))
if str(project_root) not in sys.path:
    sys.path.insert(0, str(project_root))

import uvicorn

if __name__ == "__main__":
    while True:
        try:
            uvicorn.run(
                "app.main:app",
                host="127.0.0.1",
                port=8000,
                log_level="info",
                reload=True,
                reload_dirs=["app"],
                reload_excludes=[
                    "*.pyc",
                    "*.log",
                    "*.tmp",
                    "storage/*",
                    ".pytest_cache/*",
                    "reports/*",
                    "deployment/*",
                ],
            )
        except (KeyboardInterrupt, SystemExit):
            break
        except Exception as e:
            print(f"[DSCons Server] Uvicorn exited with error: {e}. Restarting in 2s...")
            import time
            time.sleep(2)

