#!/usr/bin/env bash # check_is_installed checks to see if the supplied executable is installed and # exits if not. An optional second argument is an extra message to display when # the supplied executable is not installed. # # Usage: # # check_is_installed PROGRAM [ MSG ] # # Example: # # check_is_installed kind "You can install kind with the helper scripts/install-kind.sh" check_is_installed() { local __name="$1" local __extra_msg="$2" if ! is_installed "$__name"; then echo "FATAL: Missing requirement '$__name'" echo "Please install $__name before running this script." if [[ -n $__extra_msg ]]; then echo "" echo "$__extra_msg" echo "" fi exit 1 fi } is_installed() { local __name="$1" if $(which $__name >/dev/null 2>&1); then return 0 else return 1 fi } # vpc_id fetches the vpc id of the GitHub Actions runner/EC2 instance. # vpc id is needed for setting up AWS CloudMap namespaces vpc_id() { local __md_url="http://169.254.169.254/latest/meta-data/network/interfaces" local __macid=$( curl ${__md_url}/macs/ || exit 1 ) local __vpcid=$( curl ${__md_url}/macs/${__macid}vpc-id || exit 1 ) echo "$__vpcid" } DEFAULT_DEBUG_PREFIX="DEBUG: " # debug_msg prints out a supplied message if the DEBUG environs variable is # set. An optional second argument indicates the "indentation level" for the # message. If the indentation level argument is missing, we look for the # existence of an environs variable called "indent_level" and use that debug_msg() { local __msg=${1:-} local __indent_level=${2:-} local __debug="${DEBUG:-""}" local __debug_prefix="${DEBUG_PREFIX:-$DEFAULT_DEBUG_PREFIX}" if [ ! -n "$__debug" ]; then return 0 fi __indent="" if [ -n "$__indent_level" ]; then __indent="$( for each in $( seq 0 $__indent_level ); do printf " "; done )" fi echo "$__debug_prefix$__indent$__msg" }