pre-commit-hook-yamlfmt
pre-commit-hook-yamlfmt copied to clipboard
YAML formatter for http://pre-commit.com
YAML formatter for pre-commit git hooks
YAML formatter for pre-commit.
This hook formats the indentation of YAML files and
optionally aligns top-level colons.
It uses ruamel.yaml
to do the heavy lifting and preserve comments within YAML files.
-
How-to
-
Configure pre-commit
- Use defaults
-
Combine with
yamllint
- Override defaults
-
Invoke pre-commit
- On every commit
- On demand
-
Configure pre-commit
- Contributing
- Testing
- License
How-to
Configure pre-commit
Use defaults
Add to .pre-commit-config.yaml
in your git repo:
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.2.1 # or other specific tag
hooks:
- id: yamlfmt
:bulb: If a pre-commit hook changes a file, the hook fails with a warning that files were changed.
The default settings are:
-
mapping
: 4 spaces -
sequence
: 6 spaces -
offset
: 4 spaces -
colons
: do not align top-level colons -
width
: None (use ruamel default)
Given this input:
foo:
bar:
- baz1
- baz2
The default settings result in this output:
---
foo:
bar:
- baz1
- baz2
Combine with yamllint
yamlfmt
only works with valid YAML files, so
I recommend to use yamllint
and yamlfmt
together.
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.21.0 # or higher tag
hooks:
- id: yamllint
args: [--format, parsable, --strict]
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.2.1 # or other specific tag
hooks:
- id: yamlfmt
Override defaults
Add to .pre-commit-config.yaml
in your git repo:
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.2.1 # or other specific tag
hooks:
- id: yamlfmt
args: [--mapping, '2', --sequence, '2', --offset, '0', --colons, --width, '150']
Invoke pre-commit
On every commit
If you want to invoke the checks as a git pre-commit hook, run:
# Run on every commit.
pre-commit install
On demand
If you want to run the checks on-demand (outside of git hooks), run:
# Run on-demand.
pre-commit run --all-files
The test harness of this git repo uses this approach.
Contributing
Please see CONTRIBUTING.md.
Testing
Please see TESTING.md.
License
The code in this repo is licensed under the MIT License.