#!/bin/bash
# Summary: List all available pyenv commands
# Usage: pyenv commands [--sh|--no-sh]

set -e
[[ -n $PYENV_DEBUG ]] && set -x

# Provide pyenv completions
if [[ $1 = "--complete" ]]; then
  echo --sh
  echo --no-sh
  exit
fi

if [[ $1 = "--sh" ]]; then
  sh=1
  shift
elif [[ $1 = "--no-sh" ]]; then
  nosh=1
  shift
fi

IFS=: paths=($PATH)

shopt -s nullglob

{ 
  if [[ -n $sh ]]; then
    for path in "${paths[@]}"; do
      for command in "${path}"/pyenv-sh-*; do
        echo "${command##*/pyenv-sh-}"
      done
    done
  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
