From 0a6eb61e31093885c922c800cd09b6d901baa873 Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Sat, 22 May 2021 14:50:30 +0300 Subject: [PATCH] Handle Terraform 0.15 or later. You can't specify the directory as an argument, instead use the -chdir global parameter. The main thing is getting the version correctly. --- tff | 15 ++++++++++++++- tfv | 18 ++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/tff b/tff index cf69077..b980c15 100755 --- a/tff +++ b/tff @@ -3,7 +3,20 @@ set -eu command -v terraform >/dev/null || { echo "Can't find the terraform binary, aborting." >&2; exit 1; } +version="$(terraform version | sed --silent 's/Terraform v\([0-9]*\)\.\([0-9]*\)\.[0-9]*$/\1.\2/p')" +major="$(echo "$version" | cut -d '.' -f 1)" +minor="$(echo "$version" | cut -d '.' -f 2)" +if [ "$major" -gt '0' ] || [ "$minor" -gt '14' ] +then + post0_14='1' +fi + for i in "$@" do - terraform fmt "$(dirname "$i")" || true + if [ -n "${post0_14:-}" ] + then + terraform -chdir="$(dirname "$i")" fmt || true + else + terraform fmt "$(dirname "$i")" || true + fi done diff --git a/tfv b/tfv index 5d9f1b6..f0ae394 100755 --- a/tfv +++ b/tfv @@ -6,10 +6,24 @@ command -v terraform >/dev/null || { echo "Can't find the terraform binary, abor export TF_INPUT='0' export TF_IN_AUTOMATION='1' +version="$(terraform version | sed --silent 's/Terraform v\([0-9]*\)\.\([0-9]*\)\.[0-9]*$/\1.\2/p')" +major="$(echo "$version" | cut -d '.' -f 1)" +minor="$(echo "$version" | cut -d '.' -f 2)" +if [ "$major" -gt '0' ] || [ "$minor" -gt '14' ] +then + post0_14='1' +fi + for i in "$@" do - terraform init -backend=false "$(dirname "$i")" || { code='1'; continue; } - terraform validate "$(dirname "$i")" || code='1' + if [ -n "${post0_14:-}" ] + then + terraform -chdir="$(dirname "$i")" init -backend=false || { code='1'; continue; } + terraform -chdir="$(dirname "$i")" validate || code='1' + else + terraform init -backend=false "$(dirname "$i")" || { code='1'; continue; } + terraform validate "$(dirname "$i")" || code='1' + fi done exit "${code:-0}" -- GitLab