From 5998f4f7ab12fc0781015ccc0e21ac0978b6c7f4 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Tue, 4 May 2021 04:12:17 +0300 Subject: [PATCH] Refactoring: make logic more fit for rearrangement With functions, we have more leeway in what to call --- libexec/pyenv-init | 112 +++++++++++++++++++++++++++++---------------- 1 file changed, 72 insertions(+), 40 deletions(-) diff --git a/libexec/pyenv-init b/libexec/pyenv-init index 7240b4c8..c61c3285 100755 --- a/libexec/pyenv-init +++ b/libexec/pyenv-init @@ -43,7 +43,29 @@ fi root="${0%/*}/.." -if [ -z "$print" ]; then +function main() { + case "$mode" in + "help") + help_ + exit 1 + ;; + "path") + print_path + exit 0 + ;; + "print") + init_dirs + print_env + print_completion + print_shell_function + exit 0 + ;; + esac + # should never get here + exit 2 +} + +function help_() { case "$shell" in bash ) if [ -f "${HOME}/.bashrc" ] && [ ! -f "${HOME}/.bash_profile" ]; then @@ -79,36 +101,41 @@ if [ -z "$print" ]; then esac echo } >&2 +} - exit 1 -fi +function init_dirs() { + mkdir -p "${PYENV_ROOT}/"{shims,versions} +} -mkdir -p "${PYENV_ROOT}/"{shims,versions} +function print_env() { + case "$shell" in + fish ) + echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH" + echo "set -gx PYENV_SHELL $shell" + ;; + * ) + echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"' + echo "export PYENV_SHELL=$shell" + ;; + esac +} -case "$shell" in -fish ) - echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH" - echo "set -gx PYENV_SHELL $shell" -;; -* ) - echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"' - echo "export PYENV_SHELL=$shell" -;; -esac +function print_completion() { + completion="${root}/completions/pyenv.${shell}" + if [ -r "$completion" ]; then + echo "source '$completion'" + fi -completion="${root}/completions/pyenv.${shell}" -if [ -r "$completion" ]; then - echo "source '$completion'" -fi + if [ -z "$no_rehash" ]; then + echo 'command pyenv rehash 2>/dev/null' + fi +} -if [ -z "$no_rehash" ]; then - echo 'command pyenv rehash 2>/dev/null' -fi - -commands=(`pyenv-commands --sh`) -case "$shell" in -fish ) - cat <