summaryrefslogtreecommitdiff
path: root/plugins/aws/aws.plugin.zsh
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2023-03-18 16:23:39 -0700
committerTuowen Zhao <ztuowen@gmail.com>2023-03-18 16:23:39 -0700
commit4b0bbc0b263a150eb9a9b59f196914629be06a9b (patch)
tree619723cfa449f93149b766ee397f85ce2acef5f7 /plugins/aws/aws.plugin.zsh
parentdb7efd2336e4dbe6abf321b00dbc11bc5afb1355 (diff)
parent72732a224e886933df6b64a49ec6f5e94c884612 (diff)
downloadzsh-4b0bbc0b263a150eb9a9b59f196914629be06a9b.tar.gz
zsh-4b0bbc0b263a150eb9a9b59f196914629be06a9b.tar.bz2
zsh-4b0bbc0b263a150eb9a9b59f196914629be06a9b.zip
Merge remote-tracking branch 'github/master'
Diffstat (limited to 'plugins/aws/aws.plugin.zsh')
-rw-r--r--plugins/aws/aws.plugin.zsh41
1 files changed, 39 insertions, 2 deletions
diff --git a/plugins/aws/aws.plugin.zsh b/plugins/aws/aws.plugin.zsh
index 865e82f19..1c386a3e1 100644
--- a/plugins/aws/aws.plugin.zsh
+++ b/plugins/aws/aws.plugin.zsh
@@ -2,6 +2,10 @@ function agp() {
echo $AWS_PROFILE
}
+function agr() {
+ echo $AWS_REGION
+}
+
# AWS profile selection
function asp() {
if [[ -z "$1" ]]; then
@@ -27,6 +31,25 @@ function asp() {
fi
}
+# AWS region selection
+function asr() {
+ if [[ -z "$1" ]]; then
+ unset AWS_DEFAULT_REGION AWS_REGION
+ echo AWS region cleared.
+ return
+ fi
+
+ local -a available_regions
+ available_regions=($(aws_regions))
+ if [[ -z "${available_regions[(r)$1]}" ]]; then
+ echo "${fg[red]}Available regions: \n$(aws_regions)"
+ return 1
+ fi
+
+ export AWS_REGION=$1
+ export AWS_DEFAULT_REGION=$1
+}
+
# AWS profile switch
function acp() {
if [[ -z "$1" ]]; then
@@ -145,12 +168,25 @@ function aws_change_access_key() {
AWS_PAGER="" aws iam list-access-keys
}
+function aws_regions() {
+ if [[ $AWS_DEFAULT_PROFILE || $AWS_PROFILE ]];then
+ aws ec2 describe-regions |grep RegionName | awk -F ':' '{gsub(/"/, "", $2);gsub(/,/, "", $2);gsub(/ /, "", $2); print $2}'
+ else
+ echo "You must specify a AWS profile."
+ fi
+}
+
function aws_profiles() {
aws --no-cli-pager configure list-profiles 2> /dev/null && return
[[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1
grep --color=never -Eo '\[.*\]' "${AWS_CONFIG_FILE:-$HOME/.aws/config}" | sed -E 's/^[[:space:]]*\[(profile)?[[:space:]]*([^[:space:]]+)\][[:space:]]*$/\2/g'
}
+function _aws_regions() {
+ reply=($(aws_regions))
+}
+compctl -K _aws_regions asr
+
function _aws_profiles() {
reply=($(aws_profiles))
}
@@ -158,8 +194,8 @@ compctl -K _aws_profiles asp acp aws_change_access_key
# AWS prompt
function aws_prompt_info() {
- [[ -n "$AWS_PROFILE" ]] || return
- echo "${ZSH_THEME_AWS_PREFIX=<aws:}${AWS_PROFILE:gs/%/%%}${ZSH_THEME_AWS_SUFFIX=>}"
+ if [[ -z $AWS_REGION && -z $AWS_PROFILE ]];then return; fi
+ echo "${ZSH_THEME_AWS_PROFILE_PREFIX:=<aws:}${AWS_PROFILE}${ZSH_THEME_AWS_PROFILE_SUFFIX:=>} ${ZSH_THEME_AWS_REGION_PREFIX:=<region:}${AWS_REGION}${ZSH_THEME_AWS_REGION_SUFFIX:=>}"
}
if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then
@@ -211,3 +247,4 @@ else
[[ -r $_aws_zsh_completer_path ]] && source $_aws_zsh_completer_path
unset _aws_zsh_completer_path _brew_prefix
fi
+