Browse Source

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
Marc Cornellà 6 years ago
parent
commit
1a2d930bca
1 changed files with 27 additions and 29 deletions
  1. 27 29
      plugins/aws/aws.plugin.zsh

+ 27 - 29
plugins/aws/aws.plugin.zsh

@@ -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 {
   echo $AWS_PROFILE
 }
 
 function asp {
-  local rprompt=${RPROMPT/<aws:$(agp)>/}
+  local rprompt=${RPROMPT/<aws:$AWS_PROFILE>/}
 
   export AWS_DEFAULT_PROFILE=$1
   export AWS_PROFILE=$1
@@ -39,11 +16,32 @@ function aws_profiles {
 }
 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)
-elif _homebrew-installed && _awscli-homebrew-installed; then
+
+# Load awscli completions
+
+_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
+else
+  _aws_zsh_completer_path=/usr/share/zsh/site-functions/aws_zsh_completer.sh
 fi
 
-[ -n "$_aws_zsh_completer_path" ] && [ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path
-unset _aws_zsh_completer_path
+[[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path
+unset _aws_zsh_completer_path _brew_prefix