support/completions/gdk.bash (60 lines of code) (raw):

_gdk_root() { local root root="$(cd "$(dirname .)" || exit ; pwd -P)" while [ "$root" != "/" ]; do if [ -e "$root/GDK_ROOT" ]; then echo "$root" return fi root=$(dirname "$root") done } _gdk() { local index cur action root words local j k index="$COMP_CWORD" cur="${COMP_WORDS[index]}" action="${COMP_WORDS[1]}" root=$(_gdk_root) if [ "$index" = 1 ]; then if [ -z "$root" ]; then words="help version init" else words=$(awk '/^ gdk / { print $2 }' "$root/HELP") fi else case "$action" in init) [ -n "$BASH_VERSION" ] && compopt -o nospace words=$(compgen -o dirnames -- "$cur") ;; esac if [ -n "$root" ]; then case "$action" in start|stop|status|restart|tail) words=$(ls "$root/services") ;; psql) if [ "$index" = 2 ]; then words="-d" elif [ "$index" = 3 ]; then words="gitlabhq_development gitlabhq_test" fi ;; redis-cli) if [ -n "$BASH_VERSION" ] && type -t _command_offset >/dev/null; then _command_offset 1 return fi ;; esac fi fi for j in $(compgen -W "$words" -- "$cur") do COMPREPLY[k++]=$j done } complete -F _gdk gdk