65 lines
2.0 KiB
PHP
65 lines
2.0 KiB
PHP
autoload -U +X bashcompinit && bashcompinit
|
||
zmodload -i zsh/parameter
|
||
if ! (( $+functions[compdef] )) ; then
|
||
autoload -U +X compinit && compinit
|
||
fi
|
||
|
||
_python_argcomplete() {
|
||
local prefix=
|
||
if [[ $COMP_LINE == 'gcloud '* ]]; then
|
||
if [[ $3 == ssh && $2 == *@* ]] ;then
|
||
# handle ssh user@instance specially
|
||
prefix=${2%@*}@
|
||
COMP_LINE=${COMP_LINE%$2}"${2#*@}"
|
||
elif [[ $2 == *'='* ]] ; then
|
||
# handle --flag=value
|
||
prefix=${2%=*}'='
|
||
COMP_LINE=${COMP_LINE%$2}${2/'='/' '}
|
||
fi
|
||
fi
|
||
local IFS=''
|
||
COMPREPLY=( $(IFS="$IFS" COMP_LINE="$COMP_LINE" COMP_POINT="$COMP_POINT" _ARGCOMPLETE_COMP_WORDBREAKS="$COMP_WORDBREAKS" _ARGCOMPLETE=1 "$1" 8>&1 9>&2 1>/dev/null 2>/dev/null) )
|
||
if [[ $? != 0 ]]; then
|
||
unset COMPREPLY
|
||
return
|
||
fi
|
||
# if one completion without a trailing space, add the space
|
||
if [[ ${#COMPREPLY[@]} == 1 && $COMPREPLY != *[=' '] ]]; then
|
||
COMPREPLY+=' '
|
||
fi
|
||
if [[ $prefix != '' ]]; then
|
||
typeset -i n
|
||
for ((n=0; n < ${#COMPREPLY[@]}; n++));do
|
||
COMPREPLY[$n]=$prefix${COMPREPLY[$n]}
|
||
done
|
||
fi
|
||
}
|
||
complete -o nospace -o default -F _python_argcomplete "gcloud"
|
||
|
||
_completer() {
|
||
command=$1
|
||
name=$2
|
||
eval '[[ -n "$'"${name}"'_COMMANDS" ]] || '"${name}"'_COMMANDS="$('"${command}"')"'
|
||
set -- $COMP_LINE
|
||
shift
|
||
while [[ $1 == -* ]]; do
|
||
shift
|
||
done
|
||
[[ -n "$2" ]] && return
|
||
grep -q "${name}\s*$" <<< $COMP_LINE &&
|
||
eval 'COMPREPLY=($'"${name}"'_COMMANDS)' &&
|
||
return
|
||
[[ "$COMP_LINE" == *" " ]] && return
|
||
[[ -n "$1" ]] &&
|
||
eval 'COMPREPLY=($(echo "$'"${name}"'_COMMANDS" | grep ^'"$1"'))'
|
||
}
|
||
|
||
unset bq_COMMANDS
|
||
_bq_completer() {
|
||
_completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 bq help | grep '^[^ ][^ ]* ' | sed 's/ .*//'" bq
|
||
}
|
||
|
||
complete -o default -F _bq_completer bq
|
||
complete -o nospace -F _python_argcomplete gsutil
|
||
|