nvm.plugin.zsh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # See https://github.com/nvm-sh/nvm#installation-and-update
  2. if [[ -z "$NVM_DIR" ]]; then
  3. if [[ -d "$HOME/.nvm" ]]; then
  4. export NVM_DIR="$HOME/.nvm"
  5. elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvm" ]]; then
  6. export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvm"
  7. elif (( $+commands[brew] )); then
  8. NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}"
  9. if [[ -d "$NVM_HOMEBREW" ]]; then
  10. export NVM_DIR="$NVM_HOMEBREW"
  11. fi
  12. fi
  13. fi
  14. # Don't try to load nvm if command already available
  15. # Note: nvm is a function so we need to use `which`
  16. which nvm &>/dev/null && return
  17. if [[ -z "$NVM_DIR" ]] || [[ ! -f "$NVM_DIR/nvm.sh" ]]; then
  18. return
  19. fi
  20. if zstyle -t ':omz:plugins:nvm' lazy && \
  21. ! zstyle -t ':omz:plugins:nvm' autoload; then
  22. # Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
  23. zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd
  24. eval "
  25. function nvm node npm npx pnpm yarn $nvm_lazy_cmd {
  26. unfunction nvm node npm npx pnpm yarn $nvm_lazy_cmd
  27. # Load nvm if it exists in \$NVM_DIR
  28. [[ -f \"\$NVM_DIR/nvm.sh\" ]] && source \"\$NVM_DIR/nvm.sh\"
  29. \"\$0\" \"\$@\"
  30. }
  31. "
  32. unset nvm_lazy_cmd
  33. else
  34. source "$NVM_DIR/nvm.sh"
  35. fi
  36. # Autoload nvm when finding a .nvmrc file in the current directory
  37. # Adapted from: https://github.com/nvm-sh/nvm#zsh
  38. if zstyle -t ':omz:plugins:nvm' autoload; then
  39. function load-nvmrc {
  40. local node_version="$(nvm version)"
  41. local nvmrc_path="$(nvm_find_nvmrc)"
  42. local nvm_silent=""
  43. zstyle -t ':omz:plugins:nvm' silent-autoload && nvm_silent="--silent"
  44. if [[ -n "$nvmrc_path" ]]; then
  45. local nvmrc_node_version=$(nvm version $(cat "$nvmrc_path" | tr -dc '[:print:]'))
  46. if [[ "$nvmrc_node_version" = "N/A" ]]; then
  47. nvm install
  48. elif [[ "$nvmrc_node_version" != "$node_version" ]]; then
  49. nvm use $nvm_silent
  50. fi
  51. elif [[ "$node_version" != "$(nvm version default)" ]]; then
  52. if [[ -z $nvm_silent ]]; then
  53. echo "Reverting to nvm default version"
  54. fi
  55. nvm use default $nvm_silent
  56. fi
  57. }
  58. autoload -U add-zsh-hook
  59. add-zsh-hook chpwd load-nvmrc
  60. load-nvmrc
  61. fi
  62. # Load nvm bash completion
  63. for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_completion.d/nvm"; do
  64. if [[ -f "$nvm_completion" ]]; then
  65. # Load bashcompinit
  66. autoload -U +X bashcompinit && bashcompinit
  67. # Bypass compinit call in nvm bash completion script. See:
  68. # https://github.com/nvm-sh/nvm/blob/4436638/bash_completion#L86-L93
  69. ZSH_VERSION= source "$nvm_completion"
  70. break
  71. fi
  72. done
  73. unset NVM_HOMEBREW nvm_completion