Initial start-scripts commit
This commit is contained in:
Executable
+68
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
VENV_DIR="$ROOT_DIR/.venv"
|
||||
VENV_PYTHON="$VENV_DIR/bin/python"
|
||||
VENV_PIP="$VENV_DIR/bin/pip"
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
if [[ -f ".env" ]]; then
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
source ".env"
|
||||
set +a
|
||||
fi
|
||||
|
||||
if [[ ! -x "$VENV_PYTHON" ]]; then
|
||||
echo "Creating virtual environment in $VENV_DIR"
|
||||
python3 -m venv "$VENV_DIR"
|
||||
fi
|
||||
|
||||
create_clean_venv() {
|
||||
echo "Recreating clean virtual environment in $VENV_DIR"
|
||||
rm -rf "$VENV_DIR"
|
||||
python3 -m venv "$VENV_DIR"
|
||||
}
|
||||
|
||||
install_project() {
|
||||
if ! "$VENV_PIP" install -e "$ROOT_DIR"; then
|
||||
echo "Initial install failed, retrying from a clean virtual environment"
|
||||
create_clean_venv
|
||||
"$VENV_PIP" install -e "$ROOT_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_requirements() {
|
||||
local missing=0
|
||||
if ! "$VENV_PYTHON" - <<'PY'
|
||||
import importlib.util
|
||||
import sys
|
||||
|
||||
required_modules = [
|
||||
"fastapi",
|
||||
"livekit",
|
||||
"numpy",
|
||||
"soundfile",
|
||||
"tts",
|
||||
]
|
||||
|
||||
missing = [name for name in required_modules if importlib.util.find_spec(name) is None]
|
||||
if missing:
|
||||
print("Missing modules:", ", ".join(missing))
|
||||
sys.exit(1)
|
||||
PY
|
||||
then
|
||||
missing=1
|
||||
fi
|
||||
|
||||
if [[ "$missing" -eq 1 ]]; then
|
||||
echo "Installing project requirements into .venv"
|
||||
install_project
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_requirements
|
||||
|
||||
exec "$VENV_PYTHON" -m tts worker "$@"
|
||||
Reference in New Issue
Block a user