mirror of
https://github.com/tofuutils/pre-commit-opentofu.git
synced 2025-10-15 17:38:54 +02:00
* Fix ShellCheck warning 2219 https://github.com/koalaman/shellcheck/wiki/SC2219 * Replace GNU sed commands with perl This replaces the sed commands which required GNU sed be installed with perl versions. This should make this script more universally usable (e.g., on macOS) without installing additional tools.
45 lines
1.3 KiB
Bash
Executable file
45 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
declare -a paths
|
|
declare -a tfvars_files
|
|
|
|
index=0
|
|
|
|
for file_with_path in "$@"; do
|
|
file_with_path="${file_with_path// /__REPLACED__SPACE__}"
|
|
|
|
paths[index]=$(dirname "$file_with_path")
|
|
|
|
if [[ "$file_with_path" == *".tfvars" ]]; then
|
|
tfvars_files+=("$file_with_path")
|
|
fi
|
|
|
|
((index+=1))
|
|
done
|
|
|
|
readonly tmp_file=$(mktemp)
|
|
readonly text_file="README.md"
|
|
|
|
for path_uniq in $(echo "${paths[*]}" | tr ' ' '\n' | sort -u); do
|
|
path_uniq="${path_uniq//__REPLACED__SPACE__/ }"
|
|
|
|
pushd "$path_uniq" > /dev/null
|
|
|
|
if [[ ! -f "$text_file" ]]; then
|
|
popd > /dev/null
|
|
continue
|
|
fi
|
|
|
|
terraform-docs md ./ > "$tmp_file"
|
|
|
|
# Replace content between markers with the placeholder - https://stackoverflow.com/questions/1212799/how-do-i-extract-lines-between-two-line-delimiters-in-perl#1212834
|
|
perl -i -ne 'if (/BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK/../END OF PRE-COMMIT-TERRAFORM DOCS HOOK/) { print $_ if /BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK/; print "I_WANT_TO_BE_REPLACED\n$_" if /END OF PRE-COMMIT-TERRAFORM DOCS HOOK/;} else { print $_ }' "$text_file"
|
|
|
|
# Replace placeholder with the content of the file
|
|
perl -i -e 'open(F, "'"$tmp_file"'"); $f = join "", <F>; while(<>){if (/I_WANT_TO_BE_REPLACED/) {print $f} else {print $_};}' "$text_file"
|
|
|
|
rm -f "$tmp_file"
|
|
|
|
popd > /dev/null
|
|
done
|