From c9cd4a805d378516a24dac33278fa51deb98bf2e Mon Sep 17 00:00:00 2001 From: Nikolai Mishin Date: Tue, 26 May 2026 23:40:30 +0200 Subject: [PATCH 1/5] fix: Update hadolint installation Signed-off-by: Nikolai Mishin --- .github/workflows/pre-commit.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 1e873b6..b0566cf 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -27,9 +27,13 @@ jobs: sudo apt update && sudo apt install shellcheck - name: Install hadolint + env: + GH_TOKEN: ${{ github.token }} run: | - curl -L "$(curl -s https://api.github.com/repos/hadolint/hadolint/releases/latest | grep -o -E -m 1 "https://.+?/hadolint-Linux-x86_64")" > hadolint \ - && chmod +x hadolint && sudo mv hadolint /usr/bin/ + gh release download v2.14.0 --repo hadolint/hadolint --pattern "hadolint-linux-x86_64" + mv hadolint-linux-x86_64 hadolint + chmod +x hadolint + sudo mv hadolint /usr/bin/ # Need to success pre-commit fix push - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: From 3f263a968cd776924c3d1f4981e0fbf1cd79ff4d Mon Sep 17 00:00:00 2001 From: Michael Rosenfeld Date: Tue, 26 May 2026 12:06:07 -0400 Subject: [PATCH 2/5] fix: typo fixes Signed-off-by: Michael Rosenfeld --- CHANGELOG.md | 2 +- README.md | 2 +- lib_getopt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 847c7e6..2112ef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,7 +48,7 @@ All notable changes to this project will be documented in this file. ### Features -* spport .tofu files ([#6](https://github.com/tofuutils/pre-commit-opentofu/issues/6)) ([e059c58](https://github.com/tofuutils/pre-commit-opentofu/commit/e059c5859bceddf1ca018f55851f6940ad51f1c2)) +* support .tofu files ([#6](https://github.com/tofuutils/pre-commit-opentofu/issues/6)) ([e059c58](https://github.com/tofuutils/pre-commit-opentofu/commit/e059c5859bceddf1ca018f55851f6940ad51f1c2)) # [2.0.0](https://github.com/tofuutils/pre-commit-opentofu/compare/v1.0.4...v2.0.0) (2024-09-25) diff --git a/README.md b/README.md index c5f25a9..c8434c9 100644 --- a/README.md +++ b/README.md @@ -718,7 +718,7 @@ To replicate functionality in `tofu_docs` hook: - --args=--config=__GIT_WORKING_DIR__/.tflint.hcl ``` -3. By default, pre-commit-opentofu performs directory switching into the OpenTofu modules for you. If you want to delgate the directory changing to the binary - this will allow tflint to determine the full paths for error/warning messages, rather than just module relative paths. *Note: this requires `tflint>=0.44.0`.* For example: +3. By default, pre-commit-opentofu performs directory switching into the OpenTofu modules for you. If you want to delegate the directory changing to the binary - this will allow tflint to determine the full paths for error/warning messages, rather than just module relative paths. *Note: this requires `tflint>=0.44.0`.* For example: ```yaml - id: tofu_tflint diff --git a/lib_getopt b/lib_getopt index c4b21fa..74e72f1 100644 --- a/lib_getopt +++ b/lib_getopt @@ -360,7 +360,7 @@ getopt() { } _getopt_resolve_abbrev() { - # Resolves an abbrevation from a list of possibilities. + # Resolves an abbreviation from a list of possibilities. # If the abbreviation is unambiguous, echoes the expansion on stdout # and returns 0. If the abbreviation is ambiguous, prints a message on # stderr and returns 1. (For first parse this should convert to exit From b766f82b087793f75b3ffa61eb22da80031455ce Mon Sep 17 00:00:00 2001 From: Michael Rosenfeld Date: Fri, 29 May 2026 14:44:22 -0400 Subject: [PATCH 3/5] fix: initialize config_file_no_color variable Initialize the config_file_no_color variable to prevent potential unbound variable errors during script execution. This change improves script robustness and reliability. Signed-off-by: Michael Rosenfeld --- hooks/tofu_docs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/hooks/tofu_docs.sh b/hooks/tofu_docs.sh index 8b8d136..975ca79 100755 --- a/hooks/tofu_docs.sh +++ b/hooks/tofu_docs.sh @@ -69,6 +69,7 @@ function tofu_docs { local -a -r files=("$@") local -a paths + local config_file_no_color="" local index=0 local file_with_path From 9316d2989cd3bf4b1ba3f2d6af95d06b6360bb57 Mon Sep 17 00:00:00 2001 From: Michael Rosenfeld Date: Fri, 29 May 2026 14:48:02 -0400 Subject: [PATCH 4/5] refactor: improve directory handling and tofu validate logic Deduplicate directories in tofu_docs_replace.py by using a set of real paths, ensuring each directory is processed only once. Refactor tofu_validate.sh to use command substitution with proper exit code handling, improving reliability and clarity. Signed-off-by: Michael Rosenfeld --- hooks/tofu_docs_replace.py | 13 +++++++------ hooks/tofu_validate.sh | 21 +++++++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/hooks/tofu_docs_replace.py b/hooks/tofu_docs_replace.py index 26f1d06..2e0f4ba 100644 --- a/hooks/tofu_docs_replace.py +++ b/hooks/tofu_docs_replace.py @@ -36,13 +36,14 @@ def main(argv=None): args = parser.parse_args(argv) dirs = [] + seen_dirs = set() for filename in args.filenames: - if os.path.realpath(filename) not in dirs and ( - filename.endswith(".tf") - or filename.endswith(".tofu") - or filename.endswith(".tfvars") - ): - dirs.append(os.path.dirname(filename)) + if filename.endswith((".tf", ".tofu", ".tfvars")): + dir_path = os.path.dirname(filename) + dir_key = os.path.realpath(dir_path) + if dir_key not in seen_dirs: + seen_dirs.add(dir_key) + dirs.append(dir_path) retval = 0 diff --git a/hooks/tofu_validate.sh b/hooks/tofu_validate.sh index 3999b9f..c332a18 100755 --- a/hooks/tofu_validate.sh +++ b/hooks/tofu_validate.sh @@ -128,12 +128,18 @@ function per_dir_hook_unique_part { if [ "$retry_once_with_cleanup" != "true" ]; then # tofu validate only - validate_output=$(tofu validate "${args[@]}" 2>&1) - exit_code=$? + if validate_output=$(tofu validate "${args[@]}" 2>&1); then + exit_code=0 + else + exit_code=$? + fi else # tofu validate, plus capture possible errors - validate_output=$(tofu validate -json "${args[@]}" 2>&1) - exit_code=$? + if validate_output=$(tofu validate -json "${args[@]}" 2>&1); then + exit_code=0 + else + exit_code=$? + fi # Match specific validation errors local -i validate_errors_matched @@ -155,8 +161,11 @@ function per_dir_hook_unique_part { return $exit_code } - validate_output=$(tofu validate "${args[@]}" 2>&1) - exit_code=$? + if validate_output=$(tofu validate "${args[@]}" 2>&1); then + exit_code=0 + else + exit_code=$? + fi fi fi From 7067827cf3815a5658345bbaba4dbaed5ab09122 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 1 Jun 2026 21:40:06 +0000 Subject: [PATCH 5/5] chore(release): version 2.4.1 [skip ci] ## [2.4.1](https://github.com/tofuutils/pre-commit-opentofu/compare/v2.4.0...v2.4.1) (2026-06-01) ### Bug Fixes * initialize config_file_no_color variable ([b766f82](https://github.com/tofuutils/pre-commit-opentofu/commit/b766f82b087793f75b3ffa61eb22da80031455ce)) * typo fixes ([3f263a9](https://github.com/tofuutils/pre-commit-opentofu/commit/3f263a968cd776924c3d1f4981e0fbf1cd79ff4d)) * Update hadolint installation ([c9cd4a8](https://github.com/tofuutils/pre-commit-opentofu/commit/c9cd4a805d378516a24dac33278fa51deb98bf2e)) --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2112ef2..d702c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. +## [2.4.1](https://github.com/tofuutils/pre-commit-opentofu/compare/v2.4.0...v2.4.1) (2026-06-01) + + +### Bug Fixes + +* initialize config_file_no_color variable ([b766f82](https://github.com/tofuutils/pre-commit-opentofu/commit/b766f82b087793f75b3ffa61eb22da80031455ce)) +* typo fixes ([3f263a9](https://github.com/tofuutils/pre-commit-opentofu/commit/3f263a968cd776924c3d1f4981e0fbf1cd79ff4d)) +* Update hadolint installation ([c9cd4a8](https://github.com/tofuutils/pre-commit-opentofu/commit/c9cd4a805d378516a24dac33278fa51deb98bf2e)) + # [2.4.0](https://github.com/tofuutils/pre-commit-opentofu/compare/v2.3.0...v2.4.0) (2026-05-25)