peter-nixos/scripts/terraform
Benson Chu fd0f029e99 Let there be light!
Honestly, you should be ashamed that this hasn't been source
controlled sooner. Tsk tsk tsk.
2024-01-26 08:07:20 -06:00

65 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
set -uo pipefail;
####################################
# Ensure we can execute standalone #
####################################
function early_death() {
echo "[FATAL] ${0}: ${1}" >&2;
exit 1;
};
if [ -z "${TFENV_ROOT:-""}" ]; then
# http://stackoverflow.com/questions/1055671/how-can-i-get-the-behavior-of-gnus-readlink-f-on-a-mac
readlink_f() {
local target_file="${1}";
local file_name;
while [ "${target_file}" != "" ]; do
cd "${target_file%/*}" || early_death "Failed to 'cd \$(${target_file%/*})' while trying to determine TFENV_ROOT";
file_name="${target_file##*/}" || early_death "Failed to '\"${target_file##*/}\"' while trying to determine TFENV_ROOT";
target_file="$(readlink "${file_name}")";
done;
echo "$(pwd -P)/${file_name}";
};
TFENV_SHIM=$(readlink_f "${0}")
TFENV_ROOT="${TFENV_SHIM%/*/*}";
[ -n "${TFENV_ROOT}" ] || early_death "Failed to determine TFENV_ROOT";
else
TFENV_ROOT="${TFENV_ROOT%/}";
fi;
export TFENV_ROOT;
if [ -n "${TFENV_HELPERS:-""}" ]; then
log 'debug' 'TFENV_HELPERS is set, not sourcing helpers again';
else
[ "${TFENV_DEBUG:-0}" -gt 0 ] && >&2 echo "[DEBUG] Sourcing helpers from ${TFENV_ROOT}/lib/helpers.sh";
if source "${TFENV_ROOT}/lib/helpers.sh"; then
log 'debug' 'Helpers sourced successfully';
else
early_death "Failed to source helpers from ${TFENV_ROOT}/lib/helpers.sh";
fi;
fi;
# Ensure libexec and bin are in $PATH
for dir in libexec bin; do
case ":${PATH}:" in
*:${TFENV_ROOT}/${dir}:*) log 'debug' "\$PATH already contains '${TFENV_ROOT}/${dir}', not adding it again";;
*)
log 'debug' "\$PATH does not contain '${TFENV_ROOT}/${dir}', prepending and exporting it now";
export PATH="${TFENV_ROOT}/${dir}:${PATH}";
;;
esac;
done;
#####################
# Begin Script Body #
#####################
log 'debug' "program=\"${0##*/}\"";
declare tfenv_path="${TFENV_ROOT}/bin/tfenv";
tfenv-exec "$@";