Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for awsume on MacOS and Linux #301

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ You will need a [Powerline-patched font][btf-patching] for this to work, unless

This theme is based loosely on [agnoster][btf-agnoster].

For MacOS install coreutils to get gdate as date has a different syntax. This is required for aws-vault and awsume support in the bobthefish prompt on MacOS.

brew intall coreutils

### Features

* A helpful, but not too distracting, greeting.
Expand Down Expand Up @@ -130,6 +133,7 @@ set -g theme_newline_prompt '$ '
- `theme_display_k8s_context`. This feature is disabled by default. Use `yes` to show the current kubernetes context (`> kubectl config current-context`).
- `theme_display_k8s_namespace`. This feature is disabled by default. Use `yes` to show the current kubernetes namespace.
- `theme_display_aws_vault_profile`. This feature is disabled by default. Use `yes` to show the currently executing [AWS Vault](https://github.com/99designs/aws-vault) profile.
- `theme_display_awsume_profile`. This feature is disabled by default. Use `yes` to show the currently executing awsume profile.
- `theme_display_user`. If set to `yes`, display username always, if set to `ssh`, only when an SSH-Session is detected, if set to no, never.
- `theme_display_hostname`. Same behaviour as `theme_display_user`.
- `theme_display_sudo_user`. If set to `yes`, displays the sudo-username in a root shell. For example, when calling `sudo -s` and having this option set to `yes`, the username of the user, who called `sudo -s`, will be displayed.
Expand Down
45 changes: 42 additions & 3 deletions functions/fish_prompt.fish
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
# set -g theme_display_k8s_context yes
# set -g theme_display_k8s_namespace no
# set -g theme_display_aws_vault_profile yes
# set -g theme_display_awsume_profile yes
# set -g theme_display_hg yes
# set -g theme_display_virtualenv no
# set -g theme_display_nix no
Expand Down Expand Up @@ -661,10 +662,15 @@ function __bobthefish_prompt_aws_vault_profile -S -d 'Show AWS Vault profile'
[ -n "$AWS_VAULT" -a -n "$AWS_SESSION_EXPIRATION" ]
or return

if test (uname) = Darwin
set now (gdate --utc +%s)
set expiry (gdate -d "$AWS_SESSION_EXPIRATION" +%s)
else
set now (date --utc +%s)
set expiry (date -d "$AWS_SESSION_EXPIRATION" +%s)
end

set -l profile $AWS_VAULT

set -l now (date --utc +%s)
set -l expiry (date -d "$AWS_SESSION_EXPIRATION" +%s)
set -l diff_mins (math "floor(( $expiry - $now ) / 60)")

set -l diff_time $diff_mins"m"
Expand All @@ -682,6 +688,38 @@ function __bobthefish_prompt_aws_vault_profile -S -d 'Show AWS Vault profile'
echo -ns $segment ' '
end

function __bobthefish_prompt_awsume_profile -S -d 'Show awsume profile'
[ "$theme_display_awsume_profile" = 'yes' ]
or return

[ -n "$AWSUME_PROFILE" -a -n "$AWSUME_EXPIRATION" ]
or return

if test (uname) = Darwin
set now (gdate --utc +%s)
set expiry (gdate -d "$AWSUME_EXPIRATION" +%s)
else
set now (date --utc +%s)
set expiry (date -d "$AWSUME_EXPIRATION" +%s)
end
set -l profile $AWSUME_PROFILE

set -l diff_mins (math "floor(( $expiry - $now ) / 60)")

set -l diff_time $diff_mins"m"
[ $diff_mins -le 0 ]
and set -l diff_time '0m'
[ $diff_mins -ge 60 ]
and set -l diff_time (math "floor($diff_mins / 60)")"h"(math "$diff_mins % 60")"m"

set -l segment $profile ' (' $diff_time ')'
set -l status_color $color_aws_vault
[ $diff_mins -le 0 ]
and set -l status_color $color_aws_vault_expired

__bobthefish_start_segment $status_color
echo -ns $segment ' '
end

# ==============================
# User / hostname info segments
Expand Down Expand Up @@ -1134,6 +1172,7 @@ function fish_prompt -d 'bobthefish, a fish theme optimized for awesome'

# Cloud Tools
__bobthefish_prompt_aws_vault_profile
__bobthefish_prompt_awsume_profile

# Virtual environments
__bobthefish_prompt_nix
Expand Down