Difference between revisions of "Git/pre-commit"

From Ever changing code
< Git
Jump to navigation Jump to search
 
Line 6: Line 6:


= Sample <code>.pre-commit-config.yaml</code> =
= Sample <code>.pre-commit-config.yaml</code> =
<syntaxhighlightjs lang=yaml>
<source lang=yaml>
# verified with pre-commit v2.19.0
# verified with pre-commit v2.19.0
repos:
repos:
Line 55: Line 55:
       - id: gitleaks
       - id: gitleaks


</syntaxhighlightjs>
</source>


= Operations =
= Operations =

Latest revision as of 08:09, 10 May 2022

Install

pip install pre-commit==2.19.0
pip install pre-commit --upgrade

Sample .pre-commit-config.yaml

# verified with pre-commit v2.19.0
repos:
  - repo: git://github.com/pre-commit/pre-commit-hooks
    rev: v4.1.0
    hooks:
      - id: fix-byte-order-marker
      - id: check-case-conflict
      - id: check-merge-conflict
      - id: detect-aws-credentials
        args: ['--allow-missing-credentials']
      - id: detect-private-key
      - id: end-of-file-fixer
      - id: mixed-line-ending
      - id: trailing-whitespace
  - repo: https://github.com/antonbabenko/pre-commit-terraform
    rev: v1.62.3 # Get the latest from: https://github.com/antonbabenko/pre-commit-terraform/releases
    hooks:
      - id: terraform_fmt # it modifies the files
        args:
          - "--args=-recursive"
  - repo: local
    hooks:
      - id: terraform-docs
        name: terraform-docs
        language: docker_image
        entry: quay.io/terraform-docs/terraform-docs:0.16.0
        args: ["--config", ".terraform-docs.yml", "markdown", "."]
        pass_filenames: false
  - repo: https://github.com/gruntwork-io/pre-commit
    rev: v0.1.17
    hooks:
      - id: shellcheck
      - id: terraform-fmt # duplication of antonbabenko/pre-commit-terraform, it does not modify files by defaults
        args:
        - "-recursive"
      - id: terraform-validate
  - repo: https://github.com/dnephin/pre-commit-golang.git
    rev: v0.4.0
    hooks:
      - id: go-fmt
      - id: go-imports
      - id: go-lint
      - id: go-mod-tidy
  - repo: https://github.com/zricethezav/gitleaks
    rev: v8.2.4
    hooks:
      - id: gitleaks

Operations

Operation of running any checks is done only on tracked or staged files. The untracked files are skipped.

pre-commit install         # install all hooks
pre-commit run --all-files # run all hooks/checks
pre-commit autoupdate      # update all hooks to their latest versions, next time you `run` they will get downloaded

Note: Pre-commit automatically adds a mount of the current code to /src if run via language: docker_image

Hooks