diff --git a/etc/pyenv.d/uninstall/envs.bash b/etc/pyenv.d/uninstall/envs.bash index c3dc5dfe..50873706 100644 --- a/etc/pyenv.d/uninstall/envs.bash +++ b/etc/pyenv.d/uninstall/envs.bash @@ -2,29 +2,33 @@ resolve_link() { $(type -p greadlink readlink | head -1) "$1" } -if [ -n "${DEFINITION}" ]; then - if [[ "${DEFINITION}" != "${DEFINITION%/envs/*}" ]]; then - # Uninstall virtualenv by long name - exec pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}" - exit 128 - else - VERSION_NAME="${VERSION_NAME:-${DEFINITION##*/}}" - PREFIX="${PREFIX:-${PYENV_ROOT}/versions/${VERSION_NAME}}" - if [ -L "${PREFIX}" ]; then - REAL_PREFIX="$(resolve_link "${PREFIX}" 2>/dev/null || true)" - REAL_DEFINITION="${REAL_PREFIX#${PYENV_ROOT}/versions/}" - if [[ "${REAL_DEFINITION}" != "${REAL_DEFINITION%/envs/*}" ]]; then - # Uninstall virtualenv by short name - exec pyenv-virtualenv-delete ${FORCE+-f} "${REAL_DEFINITION}" - exit 128 - fi +uninstall_related_virtual_env() { + if [ -n "${DEFINITION}" ]; then + if [[ "${DEFINITION}" != "${DEFINITION%/envs/*}" ]]; then + # Uninstall virtualenv by long name + exec pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}" + exit 128 else - # Uninstall all virtualenvs inside `envs` directory too - shopt -s nullglob - for virtualenv in "${PREFIX}/envs/"*; do - pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}/envs/${virtualenv##*/}" - done - shopt -u nullglob + VERSION_NAME="${VERSION_NAME:-${DEFINITION##*/}}" + PREFIX="${PREFIX:-${PYENV_ROOT}/versions/${VERSION_NAME}}" + if [ -L "${PREFIX}" ]; then + REAL_PREFIX="$(resolve_link "${PREFIX}" 2>/dev/null || true)" + REAL_DEFINITION="${REAL_PREFIX#${PYENV_ROOT}/versions/}" + if [[ "${REAL_DEFINITION}" != "${REAL_DEFINITION%/envs/*}" ]]; then + # Uninstall virtualenv by short name + exec pyenv-virtualenv-delete ${FORCE+-f} "${REAL_DEFINITION}" + exit 128 + fi + else + # Uninstall all virtualenvs inside `envs` directory too + shopt -s nullglob + for virtualenv in "${PREFIX}/envs/"*; do + pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}/envs/${virtualenv##*/}" + done + shopt -u nullglob + fi fi fi -fi +} + +before_uninstall "uninstall_related_virtual_env"