mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-11 04:53:53 -05:00
Refactor --upgrade feature with virtualenv
This commit is contained in:
@@ -209,30 +209,27 @@ create_symlinks() {
|
|||||||
shopt -u nullglob
|
shopt -u nullglob
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare_upgrade() {
|
prepare_requirements() {
|
||||||
local version="$1"
|
pyenv-exec pip freeze > "${REQUIREMENTS}"
|
||||||
local prefix="$2"
|
mv -f "${VIRTUALENV_PATH}" "${VIRTUALENV_ORIG}"
|
||||||
PYENV_VERSION="${version}" pyenv-exec pip freeze >"${UPGRADE_LIST}"
|
|
||||||
mv -f "${prefix}" "${UPGRADE_PATH}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
upgrade() {
|
install_requirements() {
|
||||||
local version="$1"
|
if [ -f "${REQUIREMENTS}" ]; then
|
||||||
local prefix="$2"
|
|
||||||
## Migrate previously installed packages from requirements.txt
|
## Migrate previously installed packages from requirements.txt
|
||||||
if ! PYENV_VERSION="${version}" pyenv-exec pip install $QUIET $VERBOSE --requirement "${UPGRADE_LIST}"; then
|
pyenv-exec pip install $QUIET $VERBOSE --requirement "${REQUIREMENTS}" || {
|
||||||
{ echo
|
|
||||||
echo "UPGRADE FAILED"
|
|
||||||
echo
|
echo
|
||||||
echo "Inspect or clean up the original tree at ${UPGRADE_PATH}"
|
echo "PIP INSTALL FAILED"
|
||||||
|
echo
|
||||||
|
echo "Inspect or clean up the original tree at ${VIRTUALENV_ORIG}"
|
||||||
echo
|
echo
|
||||||
echo "Package list:"
|
echo "Package list:"
|
||||||
cat "${UPGRADE_LIST}"
|
cat "${REQUIREMENTS}" | sed 's/^/ * /'
|
||||||
} 1>&2
|
|
||||||
return 1
|
return 1
|
||||||
|
} 1>&2
|
||||||
|
rm -f "${REQUIREMENTS}"
|
||||||
|
rm -fr "${VIRTUALENV_ORIG}"
|
||||||
fi
|
fi
|
||||||
rm -f "${UPGRADE_LIST}"
|
|
||||||
rm -fr "${UPGRADE_PATH}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PYENV_VIRTUALENV_ROOT="$(abs_dirname "$0")/.."
|
PYENV_VIRTUALENV_ROOT="$(abs_dirname "$0")/.."
|
||||||
@@ -319,6 +316,10 @@ unset HAS_PYVENV
|
|||||||
unset USE_PYVENV
|
unset USE_PYVENV
|
||||||
detect_venv
|
detect_venv
|
||||||
|
|
||||||
|
SEED="$(date "+%Y%m%d%H%M%S").$$"
|
||||||
|
VIRTUALENV_ORIG="${TMP}/pyenv-virtualenv.${SEED}"
|
||||||
|
REQUIREMENTS="${TMP}/pyenv-virtualenv.${SEED}.txt"
|
||||||
|
|
||||||
# Upgrade existing virtualenv
|
# Upgrade existing virtualenv
|
||||||
if [ -n "$UPGRADE" ]; then
|
if [ -n "$UPGRADE" ]; then
|
||||||
FORCE=1
|
FORCE=1
|
||||||
@@ -326,11 +327,6 @@ if [ -n "$UPGRADE" ]; then
|
|||||||
if [ -n "${USE_PYVENV}" ]; then
|
if [ -n "${USE_PYVENV}" ]; then
|
||||||
unset UPGRADE
|
unset UPGRADE
|
||||||
VIRTUALENV_OPTIONS[${#VIRTUALENV_OPTIONS[*]}]="--upgrade"
|
VIRTUALENV_OPTIONS[${#VIRTUALENV_OPTIONS[*]}]="--upgrade"
|
||||||
else
|
|
||||||
echo "WARNING: The \`--upgrade' has been deprecated with virtualenv and might be removed from future releases." 1>&2
|
|
||||||
SEED="$(date "+%Y%m%d%H%M%S").$$"
|
|
||||||
UPGRADE_PATH="${TMP}/pyenv-virtualenv.${SEED}"
|
|
||||||
UPGRADE_LIST="${TMP}/pyenv-virtualenv.${SEED}.txt"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -401,7 +397,7 @@ if [ -d "${VIRTUALENV_PATH}/bin" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$UPGRADE" ]; then
|
if [ -n "$UPGRADE" ]; then
|
||||||
prepare_upgrade "${VIRTUALENV_NAME}" "${VIRTUALENV_PATH}"
|
PYENV_VERSION="${VIRTUALENV_NAME}" prepare_requirements
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -424,14 +420,10 @@ cd "${PYENV_VIRTUALENV_CACHE_PATH}"
|
|||||||
venv $QUIET $VERBOSE "${VIRTUALENV_OPTIONS[@]}" "${VIRTUALENV_PATH}" || STATUS="$?"
|
venv $QUIET $VERBOSE "${VIRTUALENV_OPTIONS[@]}" "${VIRTUALENV_PATH}" || STATUS="$?"
|
||||||
|
|
||||||
## Install setuptools and pip
|
## Install setuptools and pip
|
||||||
( export PYENV_VERSION="${VIRTUALENV_NAME}"
|
PYENV_VERSION="${VIRTUALENV_NAME}" build_package_ensurepip
|
||||||
build_package_ensurepip
|
|
||||||
)
|
|
||||||
|
|
||||||
## Migrate previously installed packages from requirements.txt
|
## Migrate previously installed packages from requirements.txt
|
||||||
if [ -n "$UPGRADE" ]; then
|
PYENV_VERSION="${VIRTUALENV_NAME}" install_requirements || true
|
||||||
upgrade "${VIRTUALENV_NAME}" "${VIRTUALENV_PATH}" || STATUS="$?"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Execute `after_virtualenv` hooks
|
# Execute `after_virtualenv` hooks
|
||||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||||
|
|||||||
Reference in New Issue
Block a user