From 6a246fad63ef8f5cad8e9ee673365f29af5120a7 Mon Sep 17 00:00:00 2001 From: Jake Lodwick Date: Fri, 13 Mar 2026 04:56:23 -0600 Subject: [PATCH] commands: fast path for --sh, replace sort|uniq with sort -u (#3423) --- libexec/pyenv-commands | 45 +++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/libexec/pyenv-commands b/libexec/pyenv-commands index 283ce44b..d0012f8e 100755 --- a/libexec/pyenv-commands +++ b/libexec/pyenv-commands @@ -3,19 +3,19 @@ # Usage: pyenv commands [--sh|--no-sh] set -e -[ -n "$PYENV_DEBUG" ] && set -x +[[ -n $PYENV_DEBUG ]] && set -x # Provide pyenv completions -if [ "$1" = "--complete" ]; then +if [[ $1 = "--complete" ]]; then echo --sh echo --no-sh exit fi -if [ "$1" = "--sh" ]; then +if [[ $1 = "--sh" ]]; then sh=1 shift -elif [ "$1" = "--no-sh" ]; then +elif [[ $1 = "--no-sh" ]]; then nosh=1 shift fi @@ -24,20 +24,25 @@ IFS=: paths=($PATH) shopt -s nullglob -{ for path in "${paths[@]}"; do - for command in "${path}/pyenv-"*; do - command="${command##*pyenv-}" - if [ -n "$sh" ]; then - if [ "${command:0:3}" = "sh-" ]; then - echo "${command##sh-}" - fi - elif [ -n "$nosh" ]; then - if [ "${command:0:3}" != "sh-" ]; then - echo "${command##sh-}" - fi - else - echo "${command##sh-}" - fi +{ + if [[ -n $sh ]]; then + for path in "${paths[@]}"; do + for command in "${path}"/pyenv-sh-*; do + echo "${command##*/pyenv-sh-}" + done done - done -} | sort | uniq + else + for path in "${paths[@]}"; do + for command in "${path}"/pyenv-*; do + command="${command##*/pyenv-}" + if [[ -n $nosh ]]; then + if [[ ${command:0:3} != "sh-" ]]; then + echo "$command" + fi + else + echo "${command##sh-}" + fi + done + done + fi +} | sort -u