No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

89 líneas
1.6 KiB

  1. #!/usr/bin/env bash
  2. #
  3. # Summary: Uninstall a specific Python version
  4. #
  5. # Usage: pyenv uninstall [-f|--force] <version>
  6. #
  7. # -f Attempt to remove the specified version without prompting
  8. # for confirmation. If the version does not exist, do not
  9. # display an error message.
  10. #
  11. # See `pyenv versions` for a complete list of installed versions.
  12. #
  13. set -e
  14. # Provide pyenv completions
  15. if [ "$1" = "--complete" ]; then
  16. exec pyenv versions --bare
  17. fi
  18. usage() {
  19. pyenv-help uninstall 2>/dev/null
  20. [ -z "$1" ] || exit "$1"
  21. }
  22. if [ -z "$PYENV_ROOT" ]; then
  23. PYENV_ROOT="${HOME}/.pyenv"
  24. fi
  25. if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
  26. usage 0
  27. fi
  28. unset FORCE
  29. if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
  30. FORCE=true
  31. shift
  32. fi
  33. [ "$#" -eq 1 ] || usage 1 >&2
  34. DEFINITION="$1"
  35. case "$DEFINITION" in
  36. "" | -* )
  37. usage 1 >&2
  38. ;;
  39. esac
  40. declare -a before_hooks after_hooks
  41. before_uninstall() {
  42. local hook="$1"
  43. before_hooks["${#before_hooks[@]}"]="$hook"
  44. }
  45. after_uninstall() {
  46. local hook="$1"
  47. after_hooks["${#after_hooks[@]}"]="$hook"
  48. }
  49. OLDIFS="$IFS"
  50. IFS=$'\n' scripts=(`pyenv-hooks uninstall`)
  51. IFS="$OLDIFS"
  52. for script in "${scripts[@]}"; do source "$script"; done
  53. VERSION_NAME="${DEFINITION##*/}"
  54. PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
  55. if [ -z "$FORCE" ]; then
  56. if [ ! -d "$PREFIX" ]; then
  57. echo "pyenv: version \`$VERSION_NAME' not installed" >&2
  58. exit 1
  59. fi
  60. read -p "pyenv: remove $PREFIX? "
  61. case "$REPLY" in
  62. y* | Y* ) ;;
  63. * ) exit 1 ;;
  64. esac
  65. fi
  66. for hook in "${before_hooks[@]}"; do eval "$hook"; done
  67. if [ -d "$PREFIX" ]; then
  68. rm -rf "$PREFIX"
  69. pyenv-rehash
  70. fi
  71. for hook in "${after_hooks[@]}"; do eval "$hook"; done