1#!/bin/bash 2###-begin-npm-completion-### 3# 4# npm command completion script 5# 6# Installation: npm completion >> ~/.bashrc (or ~/.zshrc) 7# Or, maybe: npm completion > /usr/local/etc/bash_completion.d/npm 8# 9 10if type complete &>/dev/null; then 11 _npm_completion () { 12 local words cword 13 if type _get_comp_words_by_ref &>/dev/null; then 14 _get_comp_words_by_ref -n = -n @ -n : -w words -i cword 15 else 16 cword="$COMP_CWORD" 17 words=("${COMP_WORDS[@]}") 18 fi 19 20 local si="$IFS" 21 if ! IFS=$'\n' COMPREPLY=($(COMP_CWORD="$cword" \ 22 COMP_LINE="$COMP_LINE" \ 23 COMP_POINT="$COMP_POINT" \ 24 npm completion -- "${words[@]}" \ 25 2>/dev/null)); then 26 local ret=$? 27 IFS="$si" 28 return $ret 29 fi 30 IFS="$si" 31 if type __ltrim_colon_completions &>/dev/null; then 32 __ltrim_colon_completions "${words[cword]}" 33 fi 34 } 35 complete -o default -F _npm_completion npm 36elif type compdef &>/dev/null; then 37 _npm_completion() { 38 local si=$IFS 39 compadd -- $(COMP_CWORD=$((CURRENT-1)) \ 40 COMP_LINE=$BUFFER \ 41 COMP_POINT=0 \ 42 npm completion -- "${words[@]}" \ 43 2>/dev/null) 44 IFS=$si 45 } 46 compdef _npm_completion npm 47elif type compctl &>/dev/null; then 48 _npm_completion () { 49 local cword line point words si 50 read -Ac words 51 read -cn cword 52 let cword-=1 53 read -l line 54 read -ln point 55 si="$IFS" 56 if ! IFS=$'\n' reply=($(COMP_CWORD="$cword" \ 57 COMP_LINE="$line" \ 58 COMP_POINT="$point" \ 59 npm completion -- "${words[@]}" \ 60 2>/dev/null)); then 61 62 local ret=$? 63 IFS="$si" 64 return $ret 65 fi 66 IFS="$si" 67 } 68 compctl -K _npm_completion npm 69fi 70###-end-npm-completion-### 71