Refactoring: make logic more fit for rearrangement

With functions, we have more leeway in what to call
This commit is contained in:
Ivan Pozdeev 2021-05-04 04:12:17 +03:00
parent 6656066d4f
commit 5998f4f7ab

View file

@ -43,7 +43,29 @@ fi
root="${0%/*}/.." 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 case "$shell" in
bash ) bash )
if [ -f "${HOME}/.bashrc" ] && [ ! -f "${HOME}/.bash_profile" ]; then if [ -f "${HOME}/.bashrc" ] && [ ! -f "${HOME}/.bash_profile" ]; then
@ -79,36 +101,41 @@ if [ -z "$print" ]; then
esac esac
echo echo
} >&2 } >&2
}
exit 1 function init_dirs() {
fi 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 function print_completion() {
fish ) completion="${root}/completions/pyenv.${shell}"
echo "set -gx PATH '${PYENV_ROOT}/shims' \$PATH" if [ -r "$completion" ]; then
echo "set -gx PYENV_SHELL $shell" echo "source '$completion'"
;; fi
* )
echo 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
echo "export PYENV_SHELL=$shell"
;;
esac
completion="${root}/completions/pyenv.${shell}" if [ -z "$no_rehash" ]; then
if [ -r "$completion" ]; then echo 'command pyenv rehash 2>/dev/null'
echo "source '$completion'" fi
fi }
if [ -z "$no_rehash" ]; then function print_shell_function() {
echo 'command pyenv rehash 2>/dev/null' commands=(`pyenv-commands --sh`)
fi case "$shell" in
fish )
commands=(`pyenv-commands --sh`) cat <<EOS
case "$shell" in
fish )
cat <<EOS
function pyenv function pyenv
set command \$argv[1] set command \$argv[1]
set -e argv[1] set -e argv[1]
@ -121,24 +148,24 @@ function pyenv
end end
end end
EOS EOS
;; ;;
ksh ) ksh )
cat <<EOS cat <<EOS
function pyenv { function pyenv {
typeset command typeset command
EOS EOS
;; ;;
* ) * )
cat <<EOS cat <<EOS
pyenv() { pyenv() {
local command local command
EOS EOS
;; ;;
esac esac
if [ "$shell" != "fish" ]; then if [ "$shell" != "fish" ]; then
IFS="|" IFS="|"
cat <<EOS cat <<EOS
command="\${1:-}" command="\${1:-}"
if [ "\$#" -gt 0 ]; then if [ "\$#" -gt 0 ]; then
shift shift
@ -146,10 +173,15 @@ cat <<EOS
case "\$command" in case "\$command" in
${commands[*]}) ${commands[*]})
eval "\$(pyenv "sh-\$command" "\$@")";; eval "\$(pyenv "sh-\$command" "\$@")"
;;
*) *)
command pyenv "\$command" "\$@";; command pyenv "\$command" "\$@"
;;
esac esac
} }
EOS EOS
fi fi
}
main