/bash_completion_lib/complete -o default/svk

http://github.com/brinkman83/bashrc · #! · 265 lines · 251 code · 14 blank · 0 comment · 0 complexity · 18f7ae8efc111406b9ff50a3298b9815 MD5 · raw file

  1. # svk completion by Guillaume Rousse <guillomovitch@zarb.org>
  2. comp_include _filedir _get_cword
  3. _svk()
  4. {
  5. local cur prev commands options command
  6. COMPREPLY=()
  7. cur=`_get_cword`
  8. commands='add admin annotate ann blame praise cat checkout co cleanup \
  9. cmerge cm commit ci copy cp delete del remove rm depotmap \
  10. depot describe desc diff di help h ? import info list ls log \
  11. merge mirror mi mkdir move mv ren rename patch propdel pd pdel \
  12. propedit pe pedit propget pg pget proplist pl plist propset ps \
  13. pset pull push resolved revert smerge sm status st stat switch \
  14. sw sync sy update up verify'
  15. if [[ $COMP_CWORD -eq 1 ]] ; then
  16. if [[ "$cur" == -* ]]; then
  17. COMPREPLY=( $( compgen -W '--version' -- $cur ) )
  18. else
  19. COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
  20. fi
  21. else
  22. prev=${COMP_WORDS[COMP_CWORD-1]}
  23. case $prev in
  24. -@(F|-file|-targets))
  25. _filedir
  26. return 0;
  27. ;;
  28. --encoding)
  29. COMPREPLY=( $( compgen -W \
  30. '$( iconv --list | sed -e "s@//@@;" )' \
  31. -- "$cur" ) )
  32. return 0;
  33. ;;
  34. esac
  35. command=${COMP_WORDS[1]}
  36. if [[ "$cur" == -* ]]; then
  37. # possible options for the command
  38. case $command in
  39. add)
  40. options=' --non-recursive -N -q --quiet'
  41. ;;
  42. @(blame|annotate|ann|praise))
  43. options='-r --revisions -x --cross'
  44. ;;
  45. cat)
  46. options='-r --revision'
  47. ;;
  48. @(checkout|co))
  49. options='-r --revision -q --quiet -N \
  50. --non-recursive -l --list -d \
  51. --detach --export --relocate \
  52. --purge'
  53. ;;
  54. cleanup)
  55. options='-a --all'
  56. ;;
  57. @(cmerge|cm))
  58. options='-c --change -l --log -r \
  59. --revision -a --auto \
  60. --verbatim --no-ticket -m \
  61. --message -F --file --template \ --encoding -P --patch -S \
  62. --sign -C --check-only --direct'
  63. ;;
  64. @(commit|ci))
  65. options='--import -m --message -F \
  66. --file --encoding --template \
  67. -P --patch -S --sign -C \
  68. --check-only -N \
  69. --non-recursive --direct'
  70. ;;
  71. @(copy|cp))
  72. options='-r --revision -p --parent -q \
  73. --quiet -m --message -F --file \
  74. --template --encoding -P \
  75. --patch -S --sign -C \
  76. --check-only --direct'
  77. ;;
  78. @(delete|del|remove|rm))
  79. options='-k --keep-local -m --message \
  80. -F --file --encoding \
  81. --template -P --patch -S \
  82. --sign -C --check-only --direct'
  83. ;;
  84. @(depotmap|depot))
  85. options='-i --init -l --list -d \
  86. --detach --relocate'
  87. ;;
  88. @(diff|di))
  89. options='-r --revision -s --summarize \
  90. -b --verbose -N --non-recursive'
  91. ;;
  92. import)
  93. options='-f --from-checkout -t \
  94. --to-checkout -m --message -F \
  95. --file --template --encoding \
  96. -P --patch -S --sign -C \
  97. --check-only -N \
  98. --non-recursive --direct'
  99. ;;
  100. @(list|ls))
  101. options='-r --revision -v --verbose -R \
  102. --recursive -d --depth -f \
  103. --full-path'
  104. ;;
  105. log)
  106. options='-r --revision -l --limit -q \
  107. --quiet -x --cross -v --verbose'
  108. ;;
  109. merge)
  110. options='-r --revision -c --change -I \
  111. --incremental -a --auto -l \
  112. --log -s --sync -t --to -f \
  113. --from --verbatim --no-ticket \
  114. --track-rename -m --message \
  115. -F --file --template \
  116. --encoding -P --patch -S \
  117. --sign -C --check-only --direct'
  118. ;;
  119. @(mirror|mi))
  120. options='-l --list -d --detach \
  121. --relocate --recover --unlock \
  122. --upgrade'
  123. ;;
  124. mkdir)
  125. options='-p --parent -m --message -F \
  126. --file --template --encoding \
  127. -P --patch -S --sign -C \
  128. --check-only --direct'
  129. ;;
  130. @(move|mv|rename|ren))
  131. options='-r --revision -p --parent -q \
  132. --quiet -m --message -F --file \
  133. --encoding --template -P \
  134. --patch -S --sign -C \
  135. --check-only --direct'
  136. ;;
  137. patch)
  138. options='--depot'
  139. ;;
  140. @(propdel|propset|pdel|pset|pd|ps))
  141. options='-R --recursive -r --revision \
  142. --revprop -m --message -F \
  143. --file --template --encoding \
  144. -P --patch -S --sign -C \
  145. --check-only -q --quiet \
  146. --direct'
  147. ;;
  148. @(propedit|pedit|pe))
  149. options='-R --recursive -r --revision \
  150. --revprop -m --message -F \
  151. --file --template --encoding \
  152. -P --patch -S --sign -C \
  153. --check-only --direct'
  154. ;;
  155. @(propget|pget|pg))
  156. options='-R --recursive -r --revision \
  157. --revprop --strict'
  158. ;;
  159. @(proplist|plist|pl))
  160. options='-R --recursive -v --verbose \
  161. -r --revision --revprop'
  162. ;;
  163. pull)
  164. options='-a --all -l --lump'
  165. ;;
  166. push)
  167. options='-f --from -l --lump -C \
  168. --check -P --patch -S --sign \
  169. --verbatim'
  170. ;;
  171. resolved)
  172. options='-R --recursive'
  173. ;;
  174. revert)
  175. options='-R --recursive -q --quiet'
  176. ;;
  177. @(smerge|sm))
  178. options='-I --incremental -l --log -B \
  179. --baseless -b --base -s --sync \
  180. -t --to -f --from --verbatim \
  181. --no-ticket --track-rename \
  182. --host --remoterev -m \
  183. --message -F --file --template \
  184. --encoding -P --patch -S \
  185. --sign -C --check-only --direct'
  186. ;;
  187. @(status|stat|st))
  188. options='-q --quiet --no-ignore -N \
  189. --non-recursive -v --verbose'
  190. ;;
  191. @(switch|sw))
  192. options='-r --revision -d --detach -q \
  193. --quiet'
  194. ;;
  195. @(sync|sy))
  196. options='-a --all -s --skipto -t \
  197. --torev'
  198. ;;
  199. @(update|up))
  200. options='-r --revision -N \
  201. --non-recursive -C \
  202. --check-only -s --sync -m \
  203. --merge -q --quiet'
  204. ;;
  205. esac
  206. options="$options --help -h"
  207. COMPREPLY=( $( compgen -W "$options" -- $cur ) )
  208. else
  209. case $command in
  210. @(help|h|\?))
  211. COMPREPLY=( $( compgen -W "$commands \
  212. environment commands intro" -- $cur ) )
  213. ;;
  214. admin)
  215. COMPREPLY=( $( compgen -W 'help \
  216. deltify dump hotcopy \
  217. list-dblogs list-unused-dblogs \
  218. load lstxns recover rmtxns \
  219. setlog verify rmcache' \
  220. -- $cur ) )
  221. ;;
  222. patch)
  223. COMPREPLY=( $( compgen -W '--ls --list \
  224. --cat --view --regen \
  225. --regenerate --up --update \
  226. --apply --rm --delete' \
  227. -- $cur ) )
  228. ;;
  229. sync)
  230. COMPREPLY=( $( compgen -W "$( svk \
  231. mirror --list 2>/dev/null | \
  232. awk '/^\//{print $1}' )" \
  233. -- $cur ) )
  234. ;;
  235. @(co|checkout|push|pull))
  236. if [[ "$cur" == //*/* ]]; then
  237. path=${cur%/*}/
  238. else
  239. path=//
  240. fi
  241. COMPREPLY=( $( compgen -W "$( svk \
  242. list $path 2>/dev/null | sed -e 's|\(.*\)|'$path'\1|')" -- $cur ) )
  243. ;;
  244. *)
  245. _filedir
  246. ;;
  247. esac
  248. fi
  249. fi
  250. return 0
  251. } # _svk()