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

4 years ago
#!/usr/bin/env bash
# vim:ts=4:sts=4:sw=4:et
4 years ago
# shellcheck disable=SC1090,SC2034
4 years ago
#
# 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
4 years ago
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"
4 years ago
if is_piped || [ -n "${NO_FORMATTING:-}" ]; then
4 years ago
gcloud_formatting=''
4 years ago
else
# want deferred expansion
# shellcheck disable=SC2016
4 years ago
gcloud_formatting='"[box,title=\"$title\"]"'
4 years ago
fi
gcr_image_regex='^([^\.]+\.)?gcr\.io/[^/]+/[^:]+$'
gcr_image_tag_regex='^([^\.]+\.)?gcr\.io/[^/]+/[^:]+:.+$'
gcr_image_optional_tag_regex='^([^\.]+\.)?gcr\.io/[^/]+/[^:]+(:.+)?$'
4 years ago
gcp_info(){
local title="$1"
shift || :
4 years ago
if [ -z "$gcloud_formatting" ]; then
4 years ago
#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
4 years ago
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
4 years ago
fi
4 years ago
}