From 91609e25f3d93cde02ce8ed4325acb5428b6bf14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Sun, 14 Nov 2021 01:30:56 +0200 Subject: [PATCH] perf(sh-activate): avoid a duplicate pyenv-version-name call (#380) --- bin/pyenv-sh-activate | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/bin/pyenv-sh-activate b/bin/pyenv-sh-activate index 7c28dca..b9e8e12 100755 --- a/bin/pyenv-sh-activate +++ b/bin/pyenv-sh-activate @@ -52,13 +52,18 @@ while [ $# -gt 0 ]; do shift 1 done +get_current_versions() { + local IFS=: + current_versions=($(pyenv-version-name 2>/dev/null)) +} + no_shell= versions=("$@") +current_versions=() if [ -z "${versions}" ]; then no_shell=1 - OLDIFS="$IFS" - IFS=: versions=($(pyenv-version-name 2>/dev/null)) - IFS="$OLDIFS" + get_current_versions + versions=("${current_versions[@]}") fi if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then @@ -84,9 +89,7 @@ fi if ! pyenv-virtualenv-prefix "${venv}" 1>/dev/null 2>&1; then # fallback to virtualenv of current version - OLDIFS="$IFS" - IFS=: current_versions=($(pyenv-version-name)) - IFS="$OLDIFS" + [ -n "${current_versions}" ] || get_current_versions new_venv="${current_versions%/envs/*}/envs/${venv}" if pyenv-virtualenv-prefix "${new_venv}" 1>/dev/null 2>&1; then venv="${new_venv}"