Skip to content

Commit a911a22

Browse files
Upgrade uninstall hook after pyenv/pyenv#2432 (#438)
1 parent c6ff093 commit a911a22

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

etc/pyenv.d/uninstall/envs.bash

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,33 @@ resolve_link() {
22
$(type -p greadlink readlink | head -1) "$1"
33
}
44

5-
if [ -n "${DEFINITION}" ]; then
6-
if [[ "${DEFINITION}" != "${DEFINITION%/envs/*}" ]]; then
7-
# Uninstall virtualenv by long name
8-
exec pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}"
9-
exit 128
10-
else
11-
VERSION_NAME="${VERSION_NAME:-${DEFINITION##*/}}"
12-
PREFIX="${PREFIX:-${PYENV_ROOT}/versions/${VERSION_NAME}}"
13-
if [ -L "${PREFIX}" ]; then
14-
REAL_PREFIX="$(resolve_link "${PREFIX}" 2>/dev/null || true)"
15-
REAL_DEFINITION="${REAL_PREFIX#${PYENV_ROOT}/versions/}"
16-
if [[ "${REAL_DEFINITION}" != "${REAL_DEFINITION%/envs/*}" ]]; then
17-
# Uninstall virtualenv by short name
18-
exec pyenv-virtualenv-delete ${FORCE+-f} "${REAL_DEFINITION}"
19-
exit 128
20-
fi
5+
uninstall_related_virtual_env() {
6+
if [ -n "${DEFINITION}" ]; then
7+
if [[ "${DEFINITION}" != "${DEFINITION%/envs/*}" ]]; then
8+
# Uninstall virtualenv by long name
9+
exec pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}"
10+
exit 128
2111
else
22-
# Uninstall all virtualenvs inside `envs` directory too
23-
shopt -s nullglob
24-
for virtualenv in "${PREFIX}/envs/"*; do
25-
pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}/envs/${virtualenv##*/}"
26-
done
27-
shopt -u nullglob
12+
VERSION_NAME="${VERSION_NAME:-${DEFINITION##*/}}"
13+
PREFIX="${PREFIX:-${PYENV_ROOT}/versions/${VERSION_NAME}}"
14+
if [ -L "${PREFIX}" ]; then
15+
REAL_PREFIX="$(resolve_link "${PREFIX}" 2>/dev/null || true)"
16+
REAL_DEFINITION="${REAL_PREFIX#${PYENV_ROOT}/versions/}"
17+
if [[ "${REAL_DEFINITION}" != "${REAL_DEFINITION%/envs/*}" ]]; then
18+
# Uninstall virtualenv by short name
19+
exec pyenv-virtualenv-delete ${FORCE+-f} "${REAL_DEFINITION}"
20+
exit 128
21+
fi
22+
else
23+
# Uninstall all virtualenvs inside `envs` directory too
24+
shopt -s nullglob
25+
for virtualenv in "${PREFIX}/envs/"*; do
26+
pyenv-virtualenv-delete ${FORCE+-f} "${DEFINITION}/envs/${virtualenv##*/}"
27+
done
28+
shopt -u nullglob
29+
fi
2830
fi
2931
fi
30-
fi
32+
}
33+
34+
before_uninstall "uninstall_related_virtual_env"

0 commit comments

Comments
 (0)