You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.2 KiB

преди 11 години
преди 11 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
  1. #!/usr/bin/env bash
  2. # Summary: List hook scripts for a given pyenv command
  3. # Usage: pyenv hooks <command>
  4. set -e
  5. [ -n "$PYENV_DEBUG" ] && set -x
  6. # Provide pyenv completions
  7. if [ "$1" = "--complete" ]; then
  8. echo exec
  9. echo rehash
  10. echo version-name
  11. echo version-origin
  12. echo which
  13. exit
  14. fi
  15. PYENV_COMMAND="$1"
  16. if [ -z "$PYENV_COMMAND" ]; then
  17. pyenv-help --usage hooks >&2
  18. exit 1
  19. fi
  20. if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; then
  21. if [ -n "$PYENV_NATIVE_EXT" ]; then
  22. echo "pyenv: failed to load \`realpath' builtin" >&2
  23. exit 1
  24. fi
  25. READLINK=$(type -p greadlink readlink | head -1)
  26. if [ -z "$READLINK" ]; then
  27. echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
  28. exit 1
  29. fi
  30. resolve_link() {
  31. $READLINK "$1"
  32. }
  33. realpath() {
  34. local cwd="$PWD"
  35. local path="$1"
  36. local name
  37. while [ -n "$path" ]; do
  38. name="${path##*/}"
  39. [ "$name" = "$path" ] || cd "${path%/*}"
  40. path="$(resolve_link "$name" || true)"
  41. done
  42. echo "${PWD}/$name"
  43. cd "$cwd"
  44. }
  45. fi
  46. IFS=: hook_paths=($PYENV_HOOK_PATH)
  47. shopt -s nullglob
  48. for path in "${hook_paths[@]}"; do
  49. for script in "$path/$PYENV_COMMAND"/*.bash; do
  50. realpath "$script"
  51. done
  52. done
  53. shopt -u nullglob