summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/nvm/nvm.plugin.zsh62
1 files changed, 42 insertions, 20 deletions
diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh
index 2264a2420..ee8d2324b 100644
--- a/plugins/nvm/nvm.plugin.zsh
+++ b/plugins/nvm/nvm.plugin.zsh
@@ -1,23 +1,45 @@
-# Set NVM_DIR if it isn't already defined
-[[ -z "$NVM_DIR" ]] && export NVM_DIR="$HOME/.nvm"
+# nvm
+#
+# This plugin locates and loads nvm, looking for it in well-known locations.
-# Don't try to load nvm if command already available
-type "nvm" &> /dev/null && return
+() {
+ emulate -L zsh
+ local nvm_install_dir="" dir install_locations
+ if [[ -n $NVM_INSTALL_DIR ]]; then
+ # User-specified path
+ nvm_install_dir=$NVM_INSTALL_DIR
+ else
+ # Well-known common installation locations for NVM
+ install_locations=( ~/.nvm )
+ [[ -n $NVM_DIR ]] && install_locations=($NVM_DIR $install_locations)
+ # Mac Homebrew sticks
+ which brew &>/dev/null && install_locations+=$(brew --prefix nvm)
+ for dir ($install_locations); do
+ if [[ -s $dir/nvm.sh ]]; then
+ nvm_install_dir=$dir
+ break
+ fi
+ done
+ fi
-# Load nvm if it exists in $NVM_DIR
-if [[ -f "$NVM_DIR/nvm.sh" ]]; then
- source "$NVM_DIR/nvm.sh"
- return
-fi
+ if [[ -n $nvm_install_dir ]]; then
+ source $nvm_install_dir/nvm.sh
+ else
+ # No NVM installation found
+ return 0
+ fi
-# Otherwise try to load nvm installed via Homebrew
-
-# User can set this if they have an unusual Homebrew setup
-NVM_HOMEBREW="${NVM_HOMEBREW:-/usr/local/opt/nvm}"
-# Load nvm from Homebrew location if it exists
-[[ -f "$NVM_HOMEBREW/nvm.sh" ]] && source "$NVM_HOMEBREW/nvm.sh"
-# Load nvm bash completion from Homebrew if it exists
-if [[ -f "$NVM_HOMEBREW/etc/bash_completion.d/nvm" ]]; then
- autoload -U +X bashcompinit && bashcompinit
- source "$NVM_HOMEBREW/etc/bash_completion.d/nvm"
-fi
+ # Locate and use the completion file shipped with NVM, instead of this
+ # plugin's completion
+ # (Their bash completion file has zsh portability support)
+ if [[ $ZSH_NVM_BUNDLED_COMPLETION == true ]]; then
+ local bash_comp_file
+ # Homebrew relocates the bash completion file, so look multiple places
+ for bash_comp_file ( bash_completion etc/bash_completion.d/nvm ); do
+ if [[ -s $nvm_install_dir/$bash_comp_file ]]; then
+ source $nvm_install_dir/$bash_comp_file
+ break;
+ fi
+ done
+ fi
+}