completion.sh 1.9 KB

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