pre-commit
Last updated
Was this helpful?
Last updated
Was this helpful?
$ python -m pip install --user pipx
$ pipx ensurepath
$ pipx install pre-commit
# or
$ brew install --HEAD pre-commit
# -- all files --
$ pre-commit run --all-files
# -- all files with specific hook --
$ pre-commit run <hook_id> --all-files
# i.e.:
$ pre-commit run trailing-whitespace --all-files
$ pre-commit migrate-config
[!NOTE|labels:reference:]
# yamllint disable rule:indentation
---
repos:
- repo: https://github.com/marslo/cr-manager
rev: v0.0.4
hooks:
- id: update-copyright
args: ["--update"]
# yamllint disable rule:indentation
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
name: Trim Trailing Whitespace
- id: end-of-file-fixer
name: End Of File Fixer
- id: check-yaml
name: Check YAML
args: ["--unsafe"]
- id: check-json
name: Check JSON
- id: check-merge-conflict
name: Check Merge Conflict
- id: check-case-conflict
name: Check Case Conflict
- id: mixed-line-ending
name: Mixed Line Ending
args: ["--fix=lf"]
mixed-line-ending
--fix
OPTIONS
COMMENTS
auto
auto-detect line-ending
no
no change line-ending
cr
force use (legacy Mac)
crlf
force use \r
(Windows)
lf
force use (Unix/Linux/macOS)
expand
+ sponge
# yamllint disable rule:indentation
---
repos:
- repo: local
hooks:
- id: tab-to-space
name: Convert Tabs to 2 Spaces
entry: bash -c 'expand -t 2 "$@" | sponge "$@"' --
language: system
types: [text]
exclude: \.(py|groovy|jenkinsfile/.*)$
- id: tab-to-4-spaces
name: Convert Tabs to 4 Spaces
entry: bash -c 'expand -t 4 "$@" | sponge "$@"' --
language: system
files: \.py$
- id: tab-to-2-spaces
name: Convert Tabs to 2 Spaces
entry: bash -c 'expand -t 2 "$@" | sponge "$@"' --
language: system
files: (\.groovy$|jenkinsfile/.*)
python solution
import argparse
import fileinput
def convert_tabs(file_path, spaces):
with fileinput.FileInput(file_path, inplace=True) as file:
for line in file:
print(line.expandtabs(spaces), end='')
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--spaces', type=int, required=True)
parser.add_argument('files', nargs='*')
args = parser.parse_args()
for file in args.files:
convert_tabs(file, args.spaces)
repos:
- repo: local
hooks:
- id: tab-to-space
name: Convert Tabs to 2 Spaces [ DEFAULT ]
entry: python tab_converter.py --spaces 2
language: system
types: [text]
exclude: \.(py|groovy)$
pass_filenames: true
- id: tab-to-4-spaces
name: Convert Tabs to 4 Spaces
entry: python tab_converter.py --spaces 4
language: system
files: \.py$
pass_filenames: true
- id: tab-to-2-spaces
name: Convert Tabs to 2 Spaces
entry: python tab_converter.py --spaces 2
language: system
files: (\.groovy$|jenkinsfile/.*)
pass_filenames: true
# yamllint disable rule:indentation
---
repos:
- repo: https://github.com/crate-ci/typos
rev: v1.31.1
hooks:
- id: typos
name: Typos
description: Finds and corrects spelling mistakes among source code.
exclude: \.git