summaryrefslogtreecommitdiff
path: root/plugins/aws/aws.plugin.zsh
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2020-04-24 20:54:33 -0600
committerTuowen Zhao <ztuowen@gmail.com>2020-04-24 20:54:33 -0600
commitc197ad40f1dca62fd1e0e555e7bfc84e39f31223 (patch)
tree5c1e753e0ff2cb9d0e08a699f17352225b9ef9f1 /plugins/aws/aws.plugin.zsh
parent0b67340fd2fe9330d8487491e1983ad1a111fb2b (diff)
parent2560f04982dfc2693221c7c0f47d1a71df09a794 (diff)
downloadzsh-c197ad40f1dca62fd1e0e555e7bfc84e39f31223.tar.gz
zsh-c197ad40f1dca62fd1e0e555e7bfc84e39f31223.tar.bz2
zsh-c197ad40f1dca62fd1e0e555e7bfc84e39f31223.zip
Merge branch 'master' of https://github.com/ohmyzsh/ohmyzsh
Diffstat (limited to 'plugins/aws/aws.plugin.zsh')
-rw-r--r--plugins/aws/aws.plugin.zsh69
1 files changed, 39 insertions, 30 deletions
diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh
index 567311372..6fa8362ca 100644
--- a/plugins/aws/aws.plugin.zsh
+++ b/plugins/aws/aws.plugin.zsh
@@ -62,36 +62,45 @@ fi
# Load awscli completions
-function _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)
+# AWS CLI v2 comes with its own autocompletion. Check if that is there, otherwise fall back
+if [[ -x /usr/local/bin/aws_completer ]]; then
+ autoload -Uz bashcompinit && bashcompinit
+ complete -C aws_completer aws
+else
+ function _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 common locations
+ if [[ -z $_aws_zsh_completer_path ]]; then
+ # Homebrew
+ if _awscli-homebrew-installed; then
+ _aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh
+ # Ubuntu
+ elif [[ -e /usr/share/zsh/vendor-completions/_awscli ]]; then
+ _aws_zsh_completer_path=/usr/share/zsh/vendor-completions/_awscli
+ # NixOS
+ elif [[ -e "${commands[aws]:P:h:h}/share/zsh/site-functions/aws_zsh_completer.sh" ]]; then
+ _aws_zsh_completer_path="${commands[aws]:P:h:h}/share/zsh/site-functions/aws_zsh_completer.sh"
+ # RPM
+ else
+ _aws_zsh_completer_path=/usr/share/zsh/site-functions/aws_zsh_completer.sh
+ fi
fi
-}
-# get aws_zsh_completer.sh location from $PATH
-_aws_zsh_completer_path="$commands[aws_zsh_completer.sh]"
-
-# otherwise check common locations
-if [[ -z $_aws_zsh_completer_path ]]; then
- # Homebrew
- if _awscli-homebrew-installed; then
- _aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh
- # Ubuntu
- elif [[ -e /usr/share/zsh/vendor-completions/_awscli ]]; then
- _aws_zsh_completer_path=/usr/share/zsh/vendor-completions/_awscli
- # RPM
- else
- _aws_zsh_completer_path=/usr/share/zsh/site-functions/aws_zsh_completer.sh
- fi
+ [[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path
+ unset _aws_zsh_completer_path _brew_prefix
fi
-
-[[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path
-unset _aws_zsh_completer_path _brew_prefix