mirror of
https://github.com/pyenv/pyenv.git
synced 2024-12-22 22:41:16 +00:00
d60d1c5cdc
Fixes use of version specifiers like `python-3.12`, which: - have an explicit `python-` prefix - are using a major version alias that has to be resolved to an exact version. Also simplified the conditional for the already working case, since it had two branches that were virtually identical.
55 lines
1.3 KiB
Bash
Executable file
55 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Summary: Show the current Python version
|
|
set -e
|
|
[ -n "$PYENV_DEBUG" ] && set -x
|
|
|
|
if [ -z "$PYENV_VERSION" ]; then
|
|
PYENV_VERSION_FILE="$(pyenv-version-file)"
|
|
PYENV_VERSION="$(pyenv-version-file-read "$PYENV_VERSION_FILE" || true)"
|
|
fi
|
|
|
|
OLDIFS="$IFS"
|
|
IFS=$'\n' scripts=(`pyenv-hooks version-name`)
|
|
IFS="$OLDIFS"
|
|
for script in "${scripts[@]}"; do
|
|
source "$script"
|
|
done
|
|
|
|
if [ -z "$PYENV_VERSION" ] || [ "$PYENV_VERSION" = "system" ]; then
|
|
echo "system"
|
|
exit
|
|
fi
|
|
|
|
version_exists() {
|
|
local version="$1"
|
|
[ -d "${PYENV_ROOT}/versions/${version}" ]
|
|
}
|
|
|
|
versions=()
|
|
OLDIFS="$IFS"
|
|
{ IFS=:
|
|
any_not_installed=0
|
|
for version in ${PYENV_VERSION}; do
|
|
# Remove the explicit 'python-' prefix from versions like 'python-3.12'.
|
|
normalised_version="${version#python-}"
|
|
if version_exists "${normalised_version}" || [ "$version" = "system" ]; then
|
|
versions=("${versions[@]}" "${normalised_version}")
|
|
elif resolved_version="$(pyenv-latest -b "${normalised_version}")"; then
|
|
versions=("${versions[@]}" "${resolved_version}")
|
|
else
|
|
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
|
any_not_installed=1
|
|
fi
|
|
done
|
|
}
|
|
IFS="$OLDIFS"
|
|
|
|
OLDIFS="$IFS"
|
|
{ IFS=:
|
|
echo "${versions[*]}"
|
|
}
|
|
IFS="$OLDIFS"
|
|
|
|
if [ "$any_not_installed" = 1 ]; then
|
|
exit 1
|
|
fi
|