configs/home/.zsh/themes/spaceship-prompt/sections/gcloud.zsh

62 lines
2.3 KiB
Bash
Raw Permalink Normal View History

2022-12-01 13:28:20 +01:00
#
# Google Cloud Platform (gcloud)
#
# gcloud is a tool that provides the primary command-line interface to Google Cloud Platform.
# Link: https://cloud.google.com/sdk/gcloud/
# ------------------------------------------------------------------------------
# Configuration
# ------------------------------------------------------------------------------
SPACESHIP_GCLOUD_SHOW="${SPACESHIP_GCLOUD_SHOW=true}"
SPACESHIP_GCLOUD_ASYNC="${SPACESHIP_GCLOUD_ASYNC=true}"
SPACESHIP_GCLOUD_PREFIX="${SPACESHIP_GCLOUD_PREFIX="using "}"
SPACESHIP_GCLOUD_SUFFIX="${SPACESHIP_GCLOUD_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"}"
SPACESHIP_GCLOUD_SYMBOL="${SPACESHIP_GCLOUD_SYMBOL="☁️ "}"
SPACESHIP_GCLOUD_COLOR="${SPACESHIP_GCLOUD_COLOR="26"}"
# ------------------------------------------------------------------------------
# Section
# ------------------------------------------------------------------------------
# Shows active gcloud configuration.
spaceship_gcloud() {
[[ $SPACESHIP_GCLOUD_SHOW == false ]] && return
# Check if the glcoud-cli is installed
spaceship::exists gcloud || return
# Set the gcloud config base dir
local gcloud_dir=${CLOUDSDK_CONFIG:-"${HOME}/.config/gcloud"}
# Check if there is an active config
[[ -f $gcloud_dir/active_config ]] || return
# Check if there is an active config override
if (( ${+CLOUDSDK_ACTIVE_CONFIG_NAME} )); then
# Uses the current config from the environment variable
local gcloud_active_config=${CLOUDSDK_ACTIVE_CONFIG_NAME}
else
# Reads the current config from the file
local gcloud_active_config=$(head -n1 $gcloud_dir/active_config)
fi
# Check the active config file exists
local gcloud_active_config_file=$gcloud_dir/configurations/config_$gcloud_active_config
[[ -f $gcloud_active_config_file ]] || return
# Reads the current project from the active config file
local gcloud_active_project=$(sed -n 's/project = \(.*\)/\1/p' $gcloud_active_config_file)
# Sets the prompt text to `active-config/active-project`
local gcloud_status="$gcloud_active_config/$gcloud_active_project"
# Show prompt section
spaceship::section \
--color "$SPACESHIP_GCLOUD_COLOR" \
--prefix "$SPACESHIP_GCLOUD_PREFIX" \
--suffix "$SPACESHIP_GCLOUD_SUFFIX" \
--symbol "$SPACESHIP_GCLOUD_SYMBOL" \
"$gcloud_status"
}