#!/usr/bin/env python3
"""Dev-mode launcher. For production install via pip + run `p3x-meet-assistant`.
This script auto-activates the project venv and installs missing packages,
then hands off to the same `meet_assistant.cli:main` entry point that the
installed console script uses.
"""
import os
import subprocess
import sys
def ensure_venv():
venv_python = os.path.join(os.path.dirname(os.path.abspath(__file__)), "venv", "bin", "python3")
if os.path.isfile(venv_python) and os.path.abspath(sys.executable) != os.path.abspath(venv_python):
os.execv(venv_python, [venv_python] + sys.argv)
def ensure_packages():
required = {"fastapi": "fastapi", "uvicorn": "uvicorn", "websockets": "websockets", "openai": "openai"}
for module, pip_name in required.items():
try:
__import__(module)
except ImportError:
print(f"Installing {pip_name}...")
subprocess.check_call([sys.executable, "-m", "pip", "install", pip_name])
# Optional: audio capture packages (only needed for server-side PulseAudio capture)
for module, pip_name in {"speech_recognition": "SpeechRecognition", "pyaudio": "PyAudio"}.items():
try:
__import__(module)
except ImportError:
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", pip_name],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except Exception:
pass
if __name__ == "__main__":
ensure_venv()
ensure_packages()
from meet_assistant.cli import main
main()