diff options
Diffstat (limited to 'plugins/aws')
| -rw-r--r-- | plugins/aws/README.md | 2 | ||||
| -rw-r--r-- | plugins/aws/aws.plugin.zsh | 62 | 
2 files changed, 42 insertions, 22 deletions
| diff --git a/plugins/aws/README.md b/plugins/aws/README.md index a52024128..57c3b54ac 100644 --- a/plugins/aws/README.md +++ b/plugins/aws/README.md @@ -25,6 +25,8 @@ plugins=(... aws)  ## Plugin options  * Set `SHOW_AWS_PROMPT=false` in your zshrc file if you want to prevent the plugin from modifying your RPROMPT. +  Some themes might overwrite the value of RPROMPT instead of appending to it, so they'll need to be fixed to +  see the AWS profile prompt.  ## Theme diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh index 6de329bb8..231ac5ad2 100644 --- a/plugins/aws/aws.plugin.zsh +++ b/plugins/aws/aws.plugin.zsh @@ -1,27 +1,35 @@ -# AWS profile selection - -function agp { +function agp() {    echo $AWS_PROFILE  } -function asp { -  export AWS_DEFAULT_PROFILE=$1 -  export AWS_PROFILE=$1 -  export AWS_EB_PROFILE=$1 - +# AWS profile selection +function asp() {    if [[ -z "$1" ]]; then +    unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_EB_PROFILE      echo AWS profile cleared. +    return +  fi + +  local available_profiles=($(aws_profiles)) +  if [[ -z "${available_profiles[(r)$1]}" ]]; then +    echo "${fg[red]}Profile '$1' not found in '${AWS_CONFIG_FILE:-$HOME/.aws/config}'" >&2 +    echo "Available profiles: ${(j:, :)available_profiles:-no profiles found}${reset_color}" >&2 +    return 1    fi + +  export AWS_DEFAULT_PROFILE=$1 +  export AWS_PROFILE=$1 +  export AWS_EB_PROFILE=$1  } -function aws_change_access_key { -  if [[ -z "$1" ]] then +function aws_change_access_key() { +  if [[ -z "$1" ]]; then      echo "usage: $0 <profile>"      return 1    fi    echo Insert the credentials when asked. -  asp "$1" +  asp "$1" || return 1    aws iam create-access-key    aws configure --profile "$1" @@ -30,27 +38,30 @@ function aws_change_access_key {    aws iam list-access-keys  } -function aws_profiles { -  reply=($(grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/')) +function aws_profiles() { +  [[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1 +  grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/'  } -compctl -K aws_profiles asp aws_change_access_key +function _aws_profiles() { +  reply=($(aws_profiles)) +} +compctl -K _aws_profiles asp aws_change_access_key  # AWS prompt -  function aws_prompt_info() {    [[ -z $AWS_PROFILE ]] && return    echo "${ZSH_THEME_AWS_PREFIX:=<aws:}${AWS_PROFILE}${ZSH_THEME_AWS_SUFFIX:=>}"  }  if [ "$SHOW_AWS_PROMPT" != false ]; then -  export RPROMPT='$(aws_prompt_info)'"$RPROMPT" +  RPROMPT='$(aws_prompt_info)'"$RPROMPT"  fi  # Load awscli completions -_awscli-homebrew-installed() { +function _awscli-homebrew-installed() {    # check if Homebrew is installed    (( $+commands[brew] )) || return 1 @@ -67,11 +78,18 @@ _awscli-homebrew-installed() {  # 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 +# 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  fi  [[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path | 
