| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | #!/bin/bash###-begin-npm-completion-##### npm command completion script## Installation: npm completion >> ~/.bashrc  (or ~/.zshrc)# Or, maybe: npm completion > /usr/local/etc/bash_completion.d/npm#if type complete &>/dev/null; then  _npm_completion () {    local words cword    if type _get_comp_words_by_ref &>/dev/null; then      _get_comp_words_by_ref -n = -n @ -n : -w words -i cword    else      cword="$COMP_CWORD"      words=("${COMP_WORDS[@]}")    fi    local si="$IFS"    IFS=$'\n' COMPREPLY=($(COMP_CWORD="$cword" \                           COMP_LINE="$COMP_LINE" \                           COMP_POINT="$COMP_POINT" \                           npm completion -- "${words[@]}" \                           2>/dev/null)) || return $?    IFS="$si"    if type __ltrim_colon_completions &>/dev/null; then      __ltrim_colon_completions "${words[cword]}"    fi  }  complete -o default -F _npm_completion npmelif type compdef &>/dev/null; then  _npm_completion() {    local si=$IFS    compadd -- $(COMP_CWORD=$((CURRENT-1)) \                 COMP_LINE=$BUFFER \                 COMP_POINT=0 \                 npm completion -- "${words[@]}" \                 2>/dev/null)    IFS=$si  }  compdef _npm_completion npmelif type compctl &>/dev/null; then  _npm_completion () {    local cword line point words si    read -Ac words    read -cn cword    let cword-=1    read -l line    read -ln point    si="$IFS"    IFS=$'\n' reply=($(COMP_CWORD="$cword" \                       COMP_LINE="$line" \                       COMP_POINT="$point" \                       npm completion -- "${words[@]}" \                       2>/dev/null)) || return $?    IFS="$si"  }  compctl -K _npm_completion npmfi###-end-npm-completion-###
 |