Refactor --upgrade feature with virtualenv

This commit is contained in:
Yamashita Yuu
2014-07-01 20:59:20 +09:00
parent c68685a12f
commit 008a9820bb

View File

@@ -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 pyenv-exec pip install $QUIET $VERBOSE --requirement "${REQUIREMENTS}" || {
if ! PYENV_VERSION="${version}" pyenv-exec pip install $QUIET $VERBOSE --requirement "${UPGRADE_LIST}"; then
{ 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/^/ * /'
return 1
} 1>&2 } 1>&2
return 1 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