mirror of
https://github.com/tofuutils/pre-commit-opentofu.git
synced 2025-10-15 17:38:54 +02:00
* Update terraform_validate.sh:
-Change to the directory before running terraform validate to use the Terraform
configuration for the appropriate working directory.
* Neglected to change the terraform validate call to use the default of the
current directory.
* Several changes to improve functionality:
- Switch to checking the path for '*.tf' instead of always checking the current
directory.
- Try to find a '.terraform' directory (which indicates a `terraform init`) and
change to that directory before running `terraform validate`.
* Fix the description for the terraform_validate hook to reflect changes that were
made in:
35e0356188
* - Clean up comments.
- Adjust variable names to better reflect what they are holding.
50 lines
1.2 KiB
Bash
Executable file
50 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
declare -a paths
|
|
index=0
|
|
error=0
|
|
|
|
for file_with_path in "$@"; do
|
|
file_with_path="${file_with_path// /__REPLACED__SPACE__}"
|
|
|
|
paths[index]=$(dirname "$file_with_path")
|
|
(("index+=1"))
|
|
done
|
|
|
|
for path_uniq in $(echo "${paths[*]}" | tr ' ' '\n' | sort -u); do
|
|
path_uniq="${path_uniq//__REPLACED__SPACE__/ }"
|
|
|
|
if [[ -n "$(find $path_uniq -maxdepth 1 -name '*.tf' -print -quit)" ]]; then
|
|
|
|
starting_path=$(realpath "$path_uniq")
|
|
terraform_path="$path_uniq"
|
|
|
|
# Find the relevant .terraform directory (indicating a 'terraform init'),
|
|
# but fall through to the current directory.
|
|
while [[ "$terraform_path" != "." ]]; do
|
|
if [[ -d "$terraform_path/.terraform" ]]; then
|
|
break
|
|
else
|
|
terraform_path=$(dirname "$terraform_path")
|
|
fi
|
|
done
|
|
|
|
validate_path="${path_uniq#"$terraform_path"}"
|
|
|
|
# Change to the directory that has been initialized, run validation, then
|
|
# change back to the starting directory.
|
|
cd "$(realpath "$terraform_path")"
|
|
if ! terraform validate $validate_path; then
|
|
error=1
|
|
echo
|
|
echo "Failed path: $path_uniq"
|
|
echo "================================"
|
|
fi
|
|
cd "$starting_path"
|
|
fi
|
|
done
|
|
|
|
if [[ "${error}" -ne 0 ]]; then
|
|
exit 1
|
|
fi
|