experiment for testing gcloud completion
This commit is contained in:
parent
7ec52769d3
commit
2b58cdfdeb
|
@ -0,0 +1,64 @@
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in New Issue