zsh/zsh.d/zshfunctions/awsprofile

47 lines
1.4 KiB
Bash

profile=$1
shift
region=${1:-""}
if [ ! -f ~/.aws/config ]; then
echo "no aws config file found, bailing out..."
return 1
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
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
if [ $match ]; then # Single match, setting profile
export AWS_CLI_AUTO_PROMPT=on
export AWS_DEFAULT_PROFILE=$match
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]"
return
else
print -P "$FX[bold]$FG[009]no match for $profile$FX[reset]"
return
fi
elif [ $AWS_PROFILE ]; then # no profile passed, clean up current one, logout
unset AWS_DEFAULT_PROFILE AWS_PROFILE AWS_DEFAULT_REGION AWS_REGION
print -P "$FX[bold]profile cleared$FX[reset]."
return
fi
print -P "$FX[bold]available profiles"
print -P "$FG[075]"
grep profile ~/.aws/config | sed -E 's/\[profile (.+)\]/\1/'
print -P "$FX[reset]"
# vim: set ts=2 sw=2 tw=0 ft=sh :