• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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