#!/usr/bin/env python3

import os
import sys
from pathlib import Path

SCRIPT_PATH = Path(__file__).resolve()
BASE_DIR = SCRIPT_PATH.parent
VENV_CANDIDATES = (
    BASE_DIR / ".venv" / "bin" / "python",
    BASE_DIR / "venv" / "bin" / "python",
)
VENV_PYTHON = next((candidate for candidate in VENV_CANDIDATES if candidate.is_file()), VENV_CANDIDATES[0])

if VENV_PYTHON.is_file():
    if not os.access(VENV_PYTHON, os.X_OK):
        print(f"Unable to launch Limristem eMail with {VENV_PYTHON}: file is not executable", file=sys.stderr)
        raise SystemExit(1)
    if VENV_PYTHON != Path(sys.executable):
        try:
            os.execv(str(VENV_PYTHON), [str(VENV_PYTHON), str(SCRIPT_PATH), *sys.argv[1:]])
        except OSError as exc:
            print(f"Unable to launch Limristem eMail with {VENV_PYTHON}: {exc}", file=sys.stderr)
            raise SystemExit(1) from exc

for candidate in (BASE_DIR / "bin", BASE_DIR):
    if candidate.is_dir():
        sys.path.insert(0, str(candidate))
        break

from api.limristem_mail_backend import main


if __name__ == "__main__":
    raise SystemExit(main())
