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: diff --git a/CHANGELOG.md b/CHANGELOG.md index 847c7e6..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) @@ -48,7 +57,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/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 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 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