#!/bin/sh
set -eu

# A wrapper for Terraform to include a variables file if one exists that matches
# the workspace name (on commands that support that).

workspace="$(terraform workspace show)"
if [ ! -f "$workspace.tfvars" ] && [ ! -d "$workspace" ]
then
    exec terraform "$@"
fi

for arg in "$@"
do
    if [ "$arg" = "plan" ] || [ "$arg" = "console" ] || [ "$arg" = "import" ] ||
        [ "$arg" = "refresh" ]
    then
        additional_args=''
        if [ -f "$workspace.tfvars" ]
        then
            additional_args="$additional_args -var-file=$workspace.tfvars"
        fi
        if [ -d "$workspace" ]
        then
            additional_args="$additional_args $(find "$workspace" -type f -name '*.tfvars' -exec printf '-var-file=%s ' {} \;)"
        fi
    fi
done

# shellcheck disable=SC2086
exec terraform "$@" ${additional_args:-}