diff --git a/zsh.d/zshfunctions/awsprofile b/zsh.d/zshfunctions/awsprofile index 6a58e38..1b3e985 100644 --- a/zsh.d/zshfunctions/awsprofile +++ b/zsh.d/zshfunctions/awsprofile @@ -1,5 +1,5 @@ profile=$1 -shift +[ $# -gt 0 ] && shift region=${1:-""} @@ -9,24 +9,37 @@ if [ ! -f ~/.aws/config ]; then fi if [ $profile ]; then # We got a profile pattern, look for a match - match=$(grep -E "\[profile .*$profile.*" ~/.aws/config | sed -E 's/\[profile (.+)\]/\1/') # Array of matching profiles - match_no=$(echo $match|wc -l) # Number of profile matching + # look for an exact match + grep -qE "\[profile $profile\]" ~/.aws/config - if [ $match_no -gt 1 ]; then # more than one match - print -P "$FX[bold]multiple profile match:" - print -P "$FG[003]" - echo $match - print -P "$FX[reset]" - return + if [ $? -eq 0 ]; then # We have an exact match + match=$profile + else # Look for regex match + match=$(grep -E "\[profile .*$profile.*" ~/.aws/config | sed -E 's/\[profile (.+)\]/\1/') # Array of matching profiles + match_no=$(echo $match|wc -l) # Number of profiles matching + + if [ $match_no -gt 1 ]; then # more than one match + print -P "$FX[bold]multiple profile match:" + print -P "$FG[003]" + echo $match + print -P "$FX[reset]" + return + fi fi if [ $match ]; then # Single match, setting profile - export AWS_CLI_AUTO_PROMPT=on + export AWS_CLI_AUTO_PROMPT=off + + # Set default profile and profile export AWS_DEFAULT_PROFILE=$match + export AWS_PROFILE=${AWS_DEFAULT_PROFILE} + + # Get default region and set region to argument or default region export AWS_DEFAULT_REGION=$(aws configure get region) - export AWS_PROFILE=$match export AWS_REGION=${region:-$AWS_DEFAULT_REGION} - print -P "$FX[bold]activating profile $FG[075]$match$FX[reset] $FX[bold] on region $FG[075]$AWS_REGION$FX[reset]" + + print -P "$FX[bold]activating profile $FG[075]$match$FX[reset]$FX[bold] on region $FG[075]$AWS_REGION$FX[reset]" + export AWS_CLI_AUTO_PROMPT=on return else print -P "$FX[bold]$FG[009]no match for $profile$FX[reset]"