diff --git a/functions/fish_prompt.fish b/functions/fish_prompt.fish index 21058ea8..8f40e2e4 100644 --- a/functions/fish_prompt.fish +++ b/functions/fish_prompt.fish @@ -656,17 +656,39 @@ end # Cloud Tools # ============================== -function __bobthefish_prompt_aws_vault_profile -S -d 'Show AWS Vault profile' - [ "$theme_display_aws_vault_profile" = 'yes' ] +function __bobthefish_prompt_aws_vault_profile -S -d 'Show AWS \(Vault\) profile' + [ "$theme_display_aws_vault_profile" = 'yes' -o "$theme_display_aws_profile" = 'yes' ] or return - [ -n "$AWS_VAULT" -a -n "$AWS_SESSION_EXPIRATION" ] + set -l AWS_SSO_CLI_CACHE (grep -Ril --exclude "aws*" "startUrl" ~/.aws/sso/cache) + + [ -n "$AWS_SESSION_EXPIRATION" -a \( -n "$AWS_VAULT" -o -n "$AWS_PROFILE" \) -o -n "$AWS_SSO_CLI_CACHE" ] or return - set -l profile $AWS_VAULT + # Filter out files that contain the "scopes" key + for file in $AWS_SSO_CLI_CACHE + cat $file | jq 'has("scopes")' | grep -q true + and set AWS_SSO_CLI_CACHE (echo $AWS_SSO_CLI_CACHE | grep -v $file) + end + + [ -n "$AWS_SSO_CLI_CACHE" ] + and set -l expiry_date (cat $AWS_SSO_CLI_CACHE | jq -r .expiresAt) + and set -l expiry (date -d "$expiry_date" +%s) + and set -l now (date --utc +%s) + + [ $now -gt $expiry ] + and return + + set -l profile "AWS SSO CLI Profile" + + [ -n "$AWS_VAULT" ] + and set -l profile $AWS_VAULT + [ -n "$AWS_PROFILE" ] + and set -l profile $AWS_PROFILE - set -l now (date --utc +%s) - set -l expiry (date -d "$AWS_SESSION_EXPIRATION" +%s) + [ -n "$AWS_PROFILE" ] + and set -l expiry (date -d "$AWS_SESSION_EXPIRATION" +%s) + or set -l expiry (date -d "$expiry_date" +%s) set -l diff_mins (math "floor(( $expiry - $now ) / 60)") set -l diff_time $diff_mins"m" @@ -685,6 +707,8 @@ function __bobthefish_prompt_aws_vault_profile -S -d 'Show AWS Vault profile' end + + # ============================== # User / hostname info segments # ============================== @@ -1202,3 +1226,6 @@ function fish_prompt -d 'bobthefish, a fish theme optimized for awesome' __bobthefish_finish_segments end +if set -q VIRTUAL_ENV + echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " " +end