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.
Add to .pre-commit-config.yaml
in your git repo:
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.0.11 # or specific tag
hooks:
- id: yamlfmt
💡 If a pre-commit hook changes a file, the hook fails with a warning that files were changed.
The default settings are:
mapping
: 4 spacessequence
: 6 spacesoffset
: 4 spacescolons
: do not align top-level colonswidth
: None (use ruamel default)
Given this input:
foo:
bar:
- baz1
- baz2
The default settings result in this output:
---
foo:
bar:
- baz1
- baz2
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.0.11 # or specific tag
hooks:
- id: yamlfmt
Add to .pre-commit-config.yaml
in your git repo:
- repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
rev: 0.0.11 # or specific tag
hooks:
- id: yamlfmt
args: [--mapping, '2', --sequence, '2', --offset, '0', --colons, --width, '150']
If you want to invoke the checks as a git pre-commit hook, run:
# Run on every commit.
pre-commit install
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.
Please see CONTRIBUTING.md.
Please see TESTING.md.
The code in this repo is licensed under the MIT License.