aboutsummaryrefslogtreecommitdiff
path: root/internal/p10k.zsh
diff options
context:
space:
mode:
authorRostyslav Sotnychenko <me@sota.sh>2019-12-16 20:21:23 +0300
committerRostyslav Sotnychenko <me@sota.sh>2019-12-16 20:21:23 +0300
commitcaea2c5b2a82dea18a0954828ec45701a31d6390 (patch)
tree4e7797b111a426570a96052a45d5a766dd831a26 /internal/p10k.zsh
parent541646c12e51d5b22f74e530c4ee6c65a6c2ee43 (diff)
Add prompt for Google Cloud application credentials
Diffstat (limited to 'internal/p10k.zsh')
-rw-r--r--internal/p10k.zsh24
1 files changed, 23 insertions, 1 deletions
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 0ac020aa..aea79054 100644
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -3379,7 +3379,6 @@ prompt_azure() {
prompt_gcloud() {
unset P9K_GCLOUD_PROJECT P9K_GCLOUD_ACCOUNT
(( $+commands[gcloud] )) || return
- local cfg=${AZURE_CONFIG_DIR:-$HOME/.azure}/azureProfile.json
if ! _p9k_cache_stat_get $0 ~/.config/gcloud/active_config ~/.config/gcloud/configurations/config_default; then
_p9k_cache_stat_set "$(gcloud config get-value account 2>/dev/null)" "$(gcloud config get-value project 2>/dev/null)"
fi
@@ -3389,6 +3388,29 @@ prompt_gcloud() {
_p9k_prompt_segment "$0" "blue" "white" "GCLOUD_ICON" 0 '' "${P9K_GCLOUD_ACCOUNT//\%/%%}:${P9K_GCLOUD_PROJECT//\%/%%}"
}
+prompt_gcloud_app() {
+ unset P9K_GCLOUD_APP_EMAIL
+ (( $+commands[gcloud] )) || return
+ [[ ! -z $GOOGLE_APPLICATION_CREDENTIALS ]] || return
+
+ if ! _p9k_cache_stat_get $0 $GOOGLE_APPLICATION_CREDENTIALS; then
+ local email="$(cat $GOOGLE_APPLICATION_CREDENTIALS | jq -r '.client_email')"
+ local account_type="$(cat $GOOGLE_APPLICATION_CREDENTIALS | jq -r '.type')"
+ local account_type_short
+ if [[ "$account_type" == "service_account" ]]; then
+ account_type_short="sa:"
+ fi
+
+ # Service account name may contain only alpha-numeric chars and hyphens, so splitting by `.` gives us `service-account-name@project-id`
+ _p9k_cache_stat_set "${email%%.*}" "$account_type" "$account_type_short"
+ fi
+ [[ -n $_p9k_cache_val[1] || -n $_p9k_cache_val[2] || -n $_p9k_cache_val[3] ]] || return
+ P9K_GCLOUD_APP_EMAIL=$_p9k_cache_val[1]
+ P9K_GCLOUD_APP_ACCOUNT_TYPE=$_p9k_cache_val[2]
+ P9K_GCLOUD_APP_ACCOUNT_TYPE_SHORT=$_p9k_cache_val[3]
+ _p9k_prompt_segment "$0" "blue" "white" "GCLOUD_ICON" 0 '' "${P9K_GCLOUD_APP_ACCOUNT_TYPE_SHORT//\%/%%}${P9K_GCLOUD_APP_EMAIL//\%/%%}"
+}
+
typeset -gra __p9k_nordvpn_tag=(
P9K_NORDVPN_STATUS
P9K_NORDVPN_TECHNOLOGY