/bash_completion.d/apport_completion

http://github.com/brinkman83/bashrc · #! · 256 lines · 203 code · 53 blank · 0 comment · 0 complexity · 25401049b34a9a3270edef042f69e2e7 MD5 · raw file

  1. #
  2. # Apport bash-completion
  3. #
  4. ###############################################################################
  5. # get available symptoms
  6. _apport_symptoms ()
  7. {
  8. local syms
  9. for FILE in $(ls /usr/share/apport/symptoms); do
  10. syms="$syms ${FILE%.py}"
  11. done
  12. echo $syms
  13. }
  14. # completion when used without parameters
  15. _apport_parameterless ()
  16. {
  17. local param
  18. # parameter-less completion
  19. # param= COMMAND parameters
  20. # package names
  21. # PIDs
  22. # Symptoms
  23. # .crash/.apport files
  24. param="$dashoptions \
  25. $( apt-cache pkgnames $cur 2> /dev/null ) \
  26. $( command ps axo pid | sed 1d ) \
  27. $( _apport_symptoms ) \
  28. $( compgen -G "${cur}*.apport"
  29. compgen -G "${cur}*.crash" )"
  30. COMPREPLY=( $( compgen -W "$param" -- $cur) )
  31. }
  32. # apport-bug ubuntu-bug completion
  33. _apport-bug ()
  34. {
  35. local cur dashoptions prev param
  36. COMPREPLY=()
  37. cur=`_get_cword`
  38. prev=${COMP_WORDS[COMP_CWORD-1]}
  39. # available options
  40. dashoptions='-h --help -f --file-bug -u --update-bug -s --symptom -p \
  41. --package -P --pid -c --crash-file --save -v --version'
  42. case "$prev" in
  43. ubuntu-bug | apport-bug)
  44. case "$cur" in
  45. -*)
  46. # parameter completion
  47. COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
  48. ;;
  49. *)
  50. # no parameter given
  51. _apport_parameterless
  52. ;;
  53. esac
  54. ;;
  55. -f | --file-bug)
  56. param="-P --pid -p --package -s --symptom"
  57. COMPREPLY=( $( compgen -W "$param $(_apport_symptoms)" -- $cur) )
  58. ;;
  59. -p | --package)
  60. COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
  61. ;;
  62. -u | --update-bug)
  63. param="-p --package"
  64. COMPREPLY=( $( compgen -W "$param" -- $cur) )
  65. ;;
  66. -s | --symptom)
  67. COMPREPLY=( $( compgen -W "$(_apport_symptoms)" -- $cur) )
  68. ;;
  69. -P | --pid)
  70. COMPREPLY=( $( compgen -W '$( command ps axo pid | sed 1d )' -- $cur ) )
  71. ;;
  72. --save)
  73. COMPREPLY=( $( compgen -o default -G "$cur*" ) )
  74. ;;
  75. -c | --crash-file)
  76. # only show *.apport *.crash files
  77. COMPREPLY=( $( compgen -G "${cur}*.apport"
  78. compgen -G "${cur}*.crash" ) )
  79. ;;
  80. -h | --help | -v | --version)
  81. # standalone parameters
  82. return 0
  83. ;;
  84. *)
  85. if [ "${COMP_WORDS[COMP_CWORD-2]}" == "--save" ]; then
  86. # use same completion as if no parameter is given
  87. case "$cur" in
  88. -*)
  89. # parameter completion
  90. COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
  91. ;;
  92. *)
  93. _apport_parameterless
  94. ;;
  95. esac
  96. else
  97. # save is allowed for most parameters
  98. param="--save"
  99. COMPREPLY=( $( compgen -W "$param" -- $cur) )
  100. fi
  101. ;;
  102. esac
  103. }
  104. # apport-cli completion
  105. _apport-cli ()
  106. {
  107. local cur dashoptions prev param
  108. COMPREPLY=()
  109. cur=`_get_cword`
  110. prev=${COMP_WORDS[COMP_CWORD-1]}
  111. # available options
  112. dashoptions='-h --help -f --file-bug -u --update-bug -s --symptom \
  113. -c --crash-file --save -v --version'
  114. case "$prev" in
  115. apport-cli)
  116. case "$cur" in
  117. -*)
  118. # parameter completion
  119. COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
  120. ;;
  121. *)
  122. # no parameter given
  123. _apport_parameterless
  124. ;;
  125. esac
  126. ;;
  127. -f | --file-bug)
  128. param="-P --pid -p --package -s --symptom"
  129. COMPREPLY=( $( compgen -W "$param $(_apport_symptoms)" -- $cur) )
  130. ;;
  131. -s | --symptom)
  132. COMPREPLY=( $( compgen -W "$(_apport_symptoms)" -- $cur) )
  133. ;;
  134. --save)
  135. COMPREPLY=( $( compgen -o default -G "$cur*" ) )
  136. ;;
  137. -c | --crash-file)
  138. # only show *.apport *.crash files
  139. COMPREPLY=( $( compgen -G "${cur}*.apport"
  140. compgen -G "${cur}*.crash" ) )
  141. ;;
  142. -h | --help | -v | --version)
  143. # standalone parameters
  144. return 0
  145. ;;
  146. *)
  147. if [ "${COMP_WORDS[COMP_CWORD-2]}" == "--save" ]; then
  148. # use same completion as if no parameter is given
  149. case "$cur" in
  150. -*)
  151. # parameter completion
  152. COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
  153. ;;
  154. *)
  155. _apport_parameterless
  156. ;;
  157. esac
  158. else
  159. # save is allowed for most parameters
  160. param="--save"
  161. COMPREPLY=( $( compgen -W "$param" -- $cur) )
  162. fi
  163. ;;
  164. esac
  165. }
  166. # apport-unpack completion
  167. _apport-unpack ()
  168. {
  169. local cur prev
  170. COMPREPLY=()
  171. cur=`_get_cword`
  172. prev=${COMP_WORDS[COMP_CWORD-1]}
  173. case "$prev" in
  174. apport-unpack)
  175. # only show *.apport *.crash files
  176. COMPREPLY=( $( compgen -G "${cur}*.apport"
  177. compgen -G "${cur}*.crash" ) )
  178. ;;
  179. esac
  180. }
  181. # apport-collect completion
  182. _apport-collect ()
  183. {
  184. local cur prev
  185. COMPREPLY=()
  186. cur=`_get_cword`
  187. prev=${COMP_WORDS[COMP_CWORD-1]}
  188. case "$prev" in
  189. apport-collect)
  190. COMPREPLY=( $( compgen -W "-p --package" -- $cur) )
  191. ;;
  192. -p | --package)
  193. # list package names
  194. COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
  195. ;;
  196. esac
  197. }
  198. # bind completion to apport commands
  199. complete -F _apport-bug -o filenames -o dirnames ubuntu-bug
  200. complete -F _apport-bug -o filenames -o dirnames apport-bug
  201. complete -F _apport-cli -o filenames -o dirnames apport-cli
  202. complete -F _apport-unpack -o filenames -o dirnames apport-unpack
  203. complete -F _apport-collect apport-collect