You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.0 KiB
Bash
59 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
# vim:ts=4:sts=4:sw=4:et
|
|
# shellcheck disable=SC1090,SC2034
|
|
#
|
|
# Author: Hari Sekhon
|
|
# Date: 2020-08-13 19:38:39 +0100 (Thu, 13 Aug 2020)
|
|
#
|
|
# https://github.com/harisekhon/bash-tools
|
|
#
|
|
# License: see accompanying Hari Sekhon LICENSE file
|
|
#
|
|
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
|
|
#
|
|
# https://www.linkedin.com/in/harisekhon
|
|
#
|
|
|
|
set -euo pipefail
|
|
[ -n "${DEBUG:-}" ] && set -x
|
|
|
|
gcp_info_formatting_help="Prints fancy boxes around GCP info in interactive mode. Skips formatting if the output is sent through a pipe to other commands, redirected to file, or \$NO_FORMATTING=1 is set in environment, to allow for easier parsing / grepping"
|
|
|
|
if is_piped || [ -n "${NO_FORMATTING:-}" ]; then
|
|
gcloud_formatting=''
|
|
else
|
|
# want deferred expansion
|
|
# shellcheck disable=SC2016
|
|
gcloud_formatting='"[box,title=\"$title\"]"'
|
|
fi
|
|
|
|
gcr_image_regex='^([^\.]+\.)?gcr\.io/[^/]+/[^:]+$'
|
|
gcr_image_tag_regex='^([^\.]+\.)?gcr\.io/[^/]+/[^:]+:.+$'
|
|
gcr_image_optional_tag_regex='^([^\.]+\.)?gcr\.io/[^/]+/[^:]+(:.+)?$'
|
|
|
|
gcp_info(){
|
|
local title="$1"
|
|
shift || :
|
|
if [ -z "$gcloud_formatting" ]; then
|
|
#perl -e "print '=' x (${#title} + 1);"
|
|
for ((i=0; i <= ${#title}; i++)); do
|
|
#printf '='
|
|
# built-in - not as portable eg. sh, but given we explicitly execute in bash should be ok
|
|
echo -n '='
|
|
done
|
|
echo
|
|
echo "$title:"
|
|
fi
|
|
if [[ "$*" =~ --format ]]; then
|
|
# eval formatting for table only to get late evaluated $title
|
|
"${@//--format=table(/--format=table$(eval echo "$gcloud_formatting")(}"
|
|
else
|
|
# formatting has to be eval'd in order to pick up latest $title as a late binding
|
|
# better than eval'ing the entire command line to evaluate $title in the formatting string interpolation
|
|
"$@" --format="$(eval echo "$gcloud_formatting")" || return
|
|
if [ -z "$gcloud_formatting" ]; then
|
|
echo
|
|
fi
|
|
fi
|
|
}
|