Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. _ws_completions()
  4. {
  5. local cur prev firstword lastword complete_options complete_words
  6.  
  7. cur=${COMP_WORDS[COMP_CWORD]}
  8. prev=${COMP_WORDS[COMP_CWORD-1]}
  9. firstword=$(_get_firstword)
  10. lastword=$(_get_lastword)
  11.  
  12. GLOBAL_COMMAND="\
  13. goto\
  14. run\
  15. create\
  16. git\
  17. clone"
  18. GLOBAL_OPTIONS="\
  19. -u"
  20.  
  21. GOTO_COMMAND="\
  22. beeketing\
  23. sitekit\
  24. capp\
  25. copt\
  26. go"
  27.  
  28. RUN_CAPP_COMMAND="\
  29. capp-dashboard\
  30. capp-landing\
  31. capp-blog"
  32.  
  33. RUN_BEEKETING_COMMAND="\
  34. beeketing-dashboard\
  35. beeketing-sdk"
  36.  
  37. RUN_SITEKIT_COMMAND="\
  38. sitekit-dashboard\
  39. sitekit-landing\
  40. sitekit-sdk"
  41.  
  42. RUN_COPT_COMMAND="\
  43. copt-dashboard\
  44. copt-sdk"
  45.  
  46. complete_options="$GLOBAL_OPTIONS"
  47. complete_words="$GLOBAL_COMMAND"
  48.  
  49. case "$firstword" in
  50. run)
  51. complete_words="$GOTO_COMMAND"
  52. case "$lastword" in
  53. capp)
  54. complete_words="$RUN_CAPP_COMMAND"
  55. if [[ $prev == -* ]]; then
  56. complete_words="$GLOBAL_OPTIONS"
  57. fi
  58. ;;
  59. beeketing)
  60. complete_words="$RUN_BEEKETING_COMMAND"
  61. if [[ $prev == -* ]]; then
  62. complete_words="$GLOBAL_OPTIONS"
  63. fi
  64. ;;
  65. sitekit)
  66. complete_words="$RUN_SITEKIT_COMMAND"
  67. if [[ $prev == -* ]]; then
  68. complete_words="$GLOBAL_OPTIONS"
  69. fi
  70. ;;
  71. copt)
  72. complete_words="$RUN_COPT_COMMAND"
  73. if [[ $prev == -* ]]; then
  74. complete_words="$GLOBAL_OPTIONS"
  75. fi
  76. ;;
  77. esac
  78. ;;
  79. goto|clone|create)
  80. complete_words="$GOTO_COMMAND"
  81. ;;
  82. esac
  83.  
  84. if [[ $cur == -* ]]; then
  85. COMPREPLY=($(compgen -W "$complete_options" -- $cur))
  86. else
  87. COMPREPLY=($(compgen -W "$complete_words" -- $cur))
  88. fi
  89. }
  90.  
  91. _get_firstword() {
  92. local firstword i
  93.  
  94. firstword=
  95. for ((i = 1; i < ${#COMP_WORDS[@]}; ++i)); do
  96. if [[ ${COMP_WORDS[i]} != -* ]]; then
  97. firstword=${COMP_WORDS[i]}
  98. break
  99. fi
  100. done
  101. echo $firstword
  102. }
  103.  
  104. _get_lastword() {
  105. local lastword i
  106.  
  107. lastword=
  108. for ((i = 1; i < ${#COMP_WORDS[@]}; ++i)); do
  109. if [[ ${COMP_WORDS[i]} != -* ]] && [[ -n ${COMP_WORDS[i]} ]] && [[ ${COMP_WORDS[i]} != $cur ]]; then
  110. lastword=${COMP_WORDS[i]}
  111. fi
  112. done
  113. echo $lastword
  114. }
  115.  
  116. complete -F _ws_completions ws
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement