aws: refactor AWS plugin (#7615)

* Update the AWS plugin to support disabling RPROMT display:
  Use a $SHOW_AWS_PROMPT option.

* Refactoring aws plugin:
  Exposing customizable aws_prompt_info function to be used in themes.

* Set aws prompt prefix and suffix to original values and fix README

Co-authored-by: "Vassilis S. Moustakas" <vsmoustakas@gmail.com>
This commit is contained in:
David Kane 2019-03-24 18:37:07 +00:00 committed by Marc Cornellà
parent 5ff21efad7
commit 532a784b80
2 changed files with 36 additions and 9 deletions

View file

@ -1,8 +1,7 @@
# aws # aws
This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html) This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html)
and a few utilities to manage AWS profiles: a function to change profiles with autocompletion support and a few utilities to manage AWS profiles and display them in the prompt.
and a function to get the current AWS profile. The current AWS profile is also displayed in `RPROMPT`.
To use it, add `aws` to the plugins array in your zshrc file. To use it, add `aws` to the plugins array in your zshrc file.
@ -12,9 +11,23 @@ plugins=(... aws)
## Plugin commands ## Plugin commands
* `asp <profile>`: Sets `AWS_PROFILE` and `AWS_DEFAULT_PROFILE` (legacy) to `<profile>`. * `asp [<profile>]`: Sets `$AWS_PROFILE` and `$AWS_DEFAULT_PROFILE` (legacy) to `<profile>`.
It also adds it to your RPROMPT. Run `asp` without arguments to clear the profile.
* `agp`: Gets the current value of `AWS_PROFILE`. * `agp`: Gets the current value of `$AWS_PROFILE`.
* `aws_profiles`: Lists the available profiles in the file referenced in `AWS_CONFIG_FILE` (default: ~/.aws/config). Used to provide completion for the `asp` function. * `aws_profiles`: Lists the available profiles in the `$AWS_CONFIG_FILE` (default: `~/.aws/config`).
Used to provide completion for the `asp` function.
## Plugin options
* Set `SHOW_AWS_PROMPT=false` in your zshrc file if you want to prevent the plugin from modifying your RPROMPT.
## Theme
The plugin creates an `aws_prompt_info` function that you can use in your theme, which displays
the current `$AWS_PROFILE`. It uses two variables to control how that is shown:
- ZSH_THEME_AWS_PREFIX: sets the prefix of the AWS_PROFILE. Defaults to `<aws:`.
- ZSH_THEME_AWS_SUFFIX: sets the suffix of the AWS_PROFILE. Defaults to `>`.

View file

@ -1,14 +1,16 @@
# AWS profile selection
function agp { function agp {
echo $AWS_PROFILE echo $AWS_PROFILE
} }
function asp { function asp {
local rprompt=${RPROMPT/<aws:$AWS_PROFILE>/}
export AWS_DEFAULT_PROFILE=$1 export AWS_DEFAULT_PROFILE=$1
export AWS_PROFILE=$1 export AWS_PROFILE=$1
export RPROMPT="<aws:$AWS_PROFILE>$rprompt" if [[ -z "$1" ]]; then
echo AWS profile cleared.
fi
} }
function aws_profiles { function aws_profiles {
@ -17,6 +19,18 @@ function aws_profiles {
compctl -K aws_profiles asp compctl -K aws_profiles asp
# 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"
fi
# Load awscli completions # Load awscli completions
_awscli-homebrew-installed() { _awscli-homebrew-installed() {