add support for .python-version file to store local python version

This commit is contained in:
Yamashita Yuu 2013-01-18 17:55:46 +09:00
parent da06998457
commit 684f7b7f21
2 changed files with 26 additions and 12 deletions

View file

@ -34,15 +34,21 @@ if [ "$1" = "--complete" ]; then
fi fi
versions=($@) versions=($@)
PYENV_VERSION_FILE=".pyenv-version"
if [ "$versions" = "--unset" ]; then if [ "$versions" = "--unset" ]; then
rm -f "$PYENV_VERSION_FILE" rm -f .python-version .pyenv-version
elif [ -n "$versions" ]; then elif [ -n "$versions" ]; then
pyenv-version-file-write "$PYENV_VERSION_FILE" "${versions[@]}" if [ "$(PYENV_VERSION= pyenv-version-origin)" -ef .pyenv-version ]; then
rm -f .pyenv-version
{ echo "pyenv: removed existing \`.pyenv-version' file and migrated"
echo " local version specification to \`.python-version' file"
} >&2
fi
pyenv-version-file-write .python-version "${versions[@]}"
else else
IFS=: versions=($( IFS=: versions=($(
pyenv-version-file-read "$PYENV_VERSION_FILE" || pyenv-version-file-read .python-version ||
pyenv-version-file-read .pyenv-version ||
{ echo "pyenv: no local version configured for this directory" { echo "pyenv: no local version configured for this directory"
exit 1 exit 1
} >&2 } >&2

View file

@ -3,14 +3,22 @@
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
root="$PYENV_DIR" find_local_version_file() {
while [ -n "$root" ]; do local root="$1"
if [ -e "${root}/.pyenv-version" ]; then while [ -n "$root" ]; do
if [ -e "${root}/.python-version" ]; then
echo "${root}/.python-version"
exit
elif [ -e "${root}/.pyenv-version" ]; then
echo "${root}/.pyenv-version" echo "${root}/.pyenv-version"
exit exit
fi fi
root="${root%/*}" root="${root%/*}"
done done
}
find_local_version_file "$PYENV_DIR"
[ "$PYENV_DIR" = "$PWD" ] || find_local_version_file "$PWD"
global_version_file="${PYENV_ROOT}/version" global_version_file="${PYENV_ROOT}/version"