codekingpro/portable-devtools
115k
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 