# init_uv_venv
# -------------
# Crea un venv con uv en el directorio especificado si no existe.
# Fallback a python -m venv si uv no esta disponible.
# Imprime la ruta del venv a stdout.
#
# USO (sourced):
#   source init_uv_venv.sh
#   venv_path=$(init_uv_venv /path/to/project)

init_uv_venv() {
    local project_dir="${1:-.}"
    local venv_path="${project_dir}/.venv"

    if [ -d "$venv_path" ] && [ -f "$venv_path/bin/python" ]; then
        echo "$venv_path"
        return 0
    fi

    if command -v uv &>/dev/null; then
        (cd "$project_dir" && uv venv) >/dev/null 2>&1
    elif command -v python3 &>/dev/null; then
        python3 -m venv "$venv_path"
    else
        echo "init_uv_venv: ni uv ni python3 disponibles" >&2
        return 1
    fi

    if [ ! -f "$venv_path/bin/python" ]; then
        echo "init_uv_venv: fallo al crear venv en $venv_path" >&2
        return 1
    fi

    echo "$venv_path"
}
