aws: refactor completion sourcing logic (#7364)

* Clean up Homebrew detection and add comments. Also changed some if flags.
* Detect aws cli completion file from RPM
This commit is contained in:
Marc Cornellà 2019-03-23 19:52:31 +01:00 committed by GitHub
parent 83d1139432
commit 1a2d930bca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,32 +1,9 @@
_homebrew-installed() {
type brew &> /dev/null
_xit=$?
if [ $_xit -eq 0 ];then
# ok , we have brew installed
# speculatively we check default brew prefix
if [ -h /usr/local/opt/awscli ];then
_brew_prefix="/usr/local/opt/awscli"
else
# ok , it is not default prefix
# this call to brew is expensive ( about 400 ms ), so at least let's make it only once
_brew_prefix=$(brew --prefix awscli)
fi
return 0
else
return $_xit
fi
}
_awscli-homebrew-installed() {
[ -r $_brew_prefix/libexec/bin/aws_zsh_completer.sh ] &> /dev/null
}
function agp { function agp {
echo $AWS_PROFILE echo $AWS_PROFILE
} }
function asp { function asp {
local rprompt=${RPROMPT/<aws:$(agp)>/} local rprompt=${RPROMPT/<aws:$AWS_PROFILE>/}
export AWS_DEFAULT_PROFILE=$1 export AWS_DEFAULT_PROFILE=$1
export AWS_PROFILE=$1 export AWS_PROFILE=$1
@ -39,11 +16,32 @@ function aws_profiles {
} }
compctl -K aws_profiles asp compctl -K aws_profiles asp
if which aws_zsh_completer.sh &>/dev/null; then
_aws_zsh_completer_path=$(which aws_zsh_completer.sh 2>/dev/null) # Load awscli completions
elif _homebrew-installed && _awscli-homebrew-installed; then
_awscli-homebrew-installed() {
# check if Homebrew is installed
(( $+commands[brew] )) || return 1
# speculatively check default brew prefix
if [ -h /usr/local/opt/awscli ]; then
_brew_prefix=/usr/local/opt/awscli
else
# ok, it is not in the default prefix
# this call to brew is expensive (about 400 ms), so at least let's make it only once
_brew_prefix=$(brew --prefix awscli)
fi
}
# get aws_zsh_completer.sh location from $PATH
_aws_zsh_completer_path="$commands[aws_zsh_completer.sh]"
# otherwise check if installed via Homebrew
if [[ -z $_aws_zsh_completer_path ]] && _awscli-homebrew-installed; then
_aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh _aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh
else
_aws_zsh_completer_path=/usr/share/zsh/site-functions/aws_zsh_completer.sh
fi fi
[ -n "$_aws_zsh_completer_path" ] && [ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path [[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path
unset _aws_zsh_completer_path unset _aws_zsh_completer_path _brew_prefix