Skip to content
Browse files

Merge pull request #109 from rafmagana/bash_completion

Bash completion
  • Loading branch information...
2 parents 6e50bc0 + cfa81b4 commit c371a3a26b050bd8f4f7962e5d07ad42433c91f1 @creationix committed
Showing with 116 additions and 0 deletions.
  1. +34 −0 README.markdown
  2. +82 −0 bash_completion
View
34 README.markdown
@@ -44,6 +44,40 @@ To set a default Node version to be used in any new shell, use the alias 'defaul
nvm alias default 0.6
+## Bash completion
+
+To activate, you need to source `bash_completion`:
+
+ [[ -r $NVM_DIR/bash_completion ]] && . $NVM_DIR/bash_completion
+
+Put the above sourcing line just below the sourcing line for NVM in your profile (`.bashrc`, `.bash_profile`).
+
+### Usage
+
+nvm
+
+ $ nvm [tab][tab]
+ alias copy-packages help list run uninstall version
+ clear-cache deactivate install ls unalias use
+
+nvm alias
+
+ $ nvm alias [tab][tab]
+ default
+
+ $ nvm alias my_alias [tab][tab]
+ v0.4.11 v0.4.12 v0.6.14
+
+nvm use
+
+ $ nvm use [tab][tab]
+ my_alias default v0.4.11 v0.4.12 v0.6.14
+
+nvm uninstall
+
+ $ nvm uninstall [tab][tab]
+ my_alias default v0.4.11 v0.4.12 v0.6.14
+
## Problems
If you try to install a node version and the installation fails, be sure to delete the node downloads from src (~/nvm/src/) or you might get an error when trying to reinstall them again or you might get an error like the following:
View
82 bash_completion
@@ -0,0 +1,82 @@
+#!/usr/bin/env bash
+
+# bash completion for Node Version Manager (NVM)
+
+__nvm_generate_completion()
+{
+ declare current_word
+ current_word="${COMP_WORDS[COMP_CWORD]}"
+ COMPREPLY=($(compgen -W "$1" -- "$current_word"))
+ return 0
+}
+
+__nvm_commands ()
+{
+ declare current_word
+ declare command
+
+ current_word="${COMP_WORDS[COMP_CWORD]}"
+
+ COMMANDS='\
+ help install uninstall use\
+ run ls list deactivate alias\
+ unalias copy-packages clear-cache version'
+
+ if [ ${#COMP_WORDS[@]} == 4 ]; then
+
+ command="${COMP_WORDS[COMP_CWORD-2]}"
+ case "${command}" in
+ alias) __nvm_installed_nodes ;;
+ esac
+
+ else
+
+ case "${current_word}" in
+ -*) __nvm_options ;;
+ *) __nvm_generate_completion "$COMMANDS" ;;
+ esac
+
+ fi
+}
+
+__nvm_options ()
+{
+ OPTIONS=''
+ __nvm_generate_completion "$OPTIONS"
+}
+
+__nvm_installed_nodes ()
+{
+ __nvm_generate_completion "$(nvm_ls) $(__nvm_aliases)"
+}
+
+__nvm_aliases ()
+{
+ declare aliases
+ aliases=""
+ if [ -d $NVM_DIR/alias ]; then
+ aliases="`cd $NVM_DIR/alias && ls`"
+ fi
+ echo "${aliases}"
+}
+
+__nvm_alias ()
+{
+ __nvm_generate_completion "$(__nvm_aliases)"
+}
+
+__nvm ()
+{
+ declare previous_word
+ previous_word="${COMP_WORDS[COMP_CWORD-1]}"
+
+ case "$previous_word" in
+ use|run|ls|list|uninstall) __nvm_installed_nodes ;;
+ alias|unalias) __nvm_alias ;;
+ *) __nvm_commands ;;
+ esac
+
+ return 0
+}
+
+complete -o default -o nospace -F __nvm nvm

0 comments on commit c371a3a

Please sign in to comment.
Something went wrong with that request. Please try again.