A look at gruntwork-io/pre-commit: 546 stars on GitHub, written primarily in Shell, tracked under the Developer Tools category. A collection of pre-commit hooks used by Gruntwork tools
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
This repo defines Git pre-commit hooks intended for use with pre-commit. The currently
supported hooks are:
tofu-fmt: Automatically run tofu fmt on all OpenTofu code (*.tf, *.tofu files).
tofu-validate: Automatically run tofu validate on all OpenTofu code (*.tf, *.tofu files).
terraform-fmt: Automatically run terraform fmt on all Terraform code (*.tf files).
terraform-validate: Automatically run terraform validate on all Terraform code (*.tf files).
packer-validate: Automatically run packer validate on all Packer code (*.pkr.* files).
terragrunt-hclfmt: Automatically run terragrunt hclfmt on all Terragrunt configurations (deprecated, use terragrunt-hcl-fmt instead if you are using Terragrunt 0.77.22 or later).
terragrunt-hcl-fmt: Automatically run terragrunt hcl fmt on all Terragrunt configurations (requires Terragrunt 0.77.22 or later).
tflint: Automatically run tflint on all OpenTofu/Terraform code (*.tf, *.tofu files).
shellcheck: Run shellcheck to lint files that contain a bash shebang.
gofmt: Automatically run gofmt on all Golang code (*.go files).
goimports: Automatically run goimports on all Golang code (*.go files).
golint: Automatically run golint on all Golang code (*.go files). [DEPRECATED]: Please use golangci-lint below.
golangci-lint: Automatically run golangci-lint on all Golang code (*.go files).
yapf: Automatically run yapf on all python code (*.py files).
helmlint Automatically run helm lint on your Helm chart files. See caveats here.
markdown-link-check Automatically run markdown-link-check on
markdown doc files.
sentinel-fmt: Automatically run sentinel fmt on all Sentinel code (*.sentinel.* files).
General Usage
In each of your repos, add a file called .pre-commit-config.yaml with the following contents:
That’s it! Now every time you commit a code change (.tf file), the hooks in the hooks: config will execute.
Running Against All Files At Once
Example: Formatting all files
If you'd like to format all of your code at once (rather than one file at a time), you can run:
pre-commit run tofu-fmt --all-files
Example: Enforcing in CI
If you'd like to enforce all your hooks, you can configure your CI build to fail if the code doesn't pass checks by
adding the following to your build scripts:
pip install pre-commit
pre-commit install
pre-commit run --all-files
If all the hooks pass, the last command will exit with an exit code of 0. If any of the hooks make changes (e.g.,
because files are not formatted), the last command will exit with a code of 1, causing the build to fail.
Helm Lint Caveats
Detecting charts
The helmlint pre-commit hook runs helm lint on the charts that have been changed by the commit. It will run once per
changed chart that it detects.
Note that charts are detected by walking up the directory tree of the changed file and looking for a Chart.yaml file
that exists on the path.
linter_values.yaml
helm lint requires input values to look for configuration errors in your helm chart. However, this means that the
linter needs a complete values file. Because we want to develop charts that define required values that the operator
should provide, we don't want to specify defaults for all the values the chart expects in the default values.yaml
file.
Therefore, to support this, this pre-commit hook looks for a special linter_values.yaml file defined in the chart
path. This will be combined with the values.yaml file before running helm lint. In your charts, you should define
the required values in linter_values.yaml.
For example, suppose you had a helm chart that defined two input values: containerImage and containerTag. Suppose
that your chart required containerImage to be defined, but not containerTag. To enforce this, you created the
following values.yaml file for your chart:
# values.yaml
# containerImage is required and defines which image to use
# containerTag specifies the image tag to use. Defaults to latest.
containerTag: latest
If you run helm lint on this chart, it will fail because somewhere in your chart you will reference
.Values.containerImage which will be undefined with this values.yaml file. To handle this, you can define a
linter_values.yaml file that defines containerImage:
# linter_values.yaml
containerImage: nginx
Now when the pre-commit hook runs, it will call helm lint with both linter_values.yaml and values.yaml:
helm lint -f values.yaml -f linter_values.yaml .
Shellcheck Arguments
To enable optional shellcheck features you can use the --enable flag.
Other shellcheck flags can not be passed through.
With the introduction of --chdir into tflint, the --config argument is now bound to whatever subdirectory you are
running the check against. For mono-repos this isn't ideal as you may have a central configuration file you'd like to
use. If this matches your use-case, you can specify the placeholder __GIT_ROOT__ value in the --config argument
that will evaluate to the root of the repository you are in.
How active is development on gruntwork-io/pre-commit?
The most recent commit recorded on gruntwork-io/pre-commit was 1.3 years ago, based on the GitHub push timestamp. The repository has 167 forks — one of the better signals of community interest.
How does gruntwork-io/pre-commit compare to other Developer Tools projects?
gruntwork-io/pre-commit is tracked by TopGit in the Developer Tools category, with 546 GitHub stars and written in Shell. Browse the Developer Tools topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does gruntwork-io/pre-commit have?
gruntwork-io/pre-commit has 546 GitHub stars — refresh the page for the live number, or check github.com/gruntwork-io/pre-commit. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What is gruntwork-io/pre-commit?
gruntwork-io/pre-commit (gruntwork-io/pre-commit) is a Shell project on GitHub. From the project's own README: A collection of pre-commit hooks used by Gruntwork tools
What language is gruntwork-io/pre-commit written in?
gruntwork-io/pre-commit is written primarily in Shell. GitHub's language field is based on the largest share of bytes in the default branch.
What topics is gruntwork-io/pre-commit associated with?
GitHub's repository topics for gruntwork-io/pre-commit: "bash", "devops", "git", "precommit-hooks". TopGit's editorial category is Developer Tools.
Why is gruntwork-io/pre-commit categorized under Developer Tools?
TopGit places gruntwork-io/pre-commit in the Developer Tools category based on its GitHub topics and description (tagged: "bash", "devops", "git"). Categories are assigned from real repository metadata, not editorial guesswork.
Read full README in the tab above.
Curious whether pre-commit is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about pre-commit.