* only run `yamllint` when relevant files have changed * avoids having to exclude files/dirs not tracked by Git e.g. .kitchen/, .bundle/ etc. * avoids a `yamllint` bug whereby pillar files under `test/` were not checked due to a conflicting `ignore` entrypull/553/head
hooks: | hooks: | ||||
- id: yamllint | - id: yamllint | ||||
name: Check YAML syntax with yamllint | name: Check YAML syntax with yamllint | ||||
args: [--strict, '.'] | |||||
always_run: true | |||||
pass_filenames: false | |||||
args: [--strict] | |||||
types: [file] | |||||
# Files to include | |||||
# 1. Obvious YAML files | |||||
# 2. `pillar.example` and similar files | |||||
# 3. SLS files under directory `test/` which are pillar files | |||||
# Files to exclude | |||||
# 1. SLS files under directory `test/` which are state files | |||||
# 2. `kitchen.vagrant.yml`, which contains Embedded Ruby (ERB) template syntax | |||||
# 3. YAML files heavily reliant on Jinja | |||||
files: | | |||||
(?x)^( | |||||
.*\.yaml| | |||||
.*\.yml| | |||||
\.salt-lint| | |||||
\.yamllint| | |||||
.*\.example| | |||||
test/.*\.sls | |||||
)$ | |||||
exclude: | | |||||
(?x)^( | |||||
kitchen.vagrant.yml| | |||||
test/.*/states/.*\.sls| | |||||
salt/osfamilymap.yaml| | |||||
salt/osmap.yaml| | |||||
salt/osfingermap.yaml | |||||
)$ | |||||
- repo: https://github.com/warpnet/salt-lint | - repo: https://github.com/warpnet/salt-lint | ||||
rev: v0.9.2 | rev: v0.9.2 | ||||
hooks: | hooks: |
# Extend the `default` configuration provided by `yamllint` | # Extend the `default` configuration provided by `yamllint` | ||||
extends: 'default' | extends: 'default' | ||||
# Files to ignore completely | |||||
# 1. All YAML files under directory `.bundle/`, introduced if gems are installed locally | |||||
# 2. All YAML files under directory `.cache/`, introduced during the CI run | |||||
# 3. All YAML files under directory `.git/` | |||||
# 4. All YAML files under directory `node_modules/`, introduced during the CI run | |||||
# 5. Any SLS files under directory `test/`, which are actually state files | |||||
# 6. Any YAML files under directory `.kitchen/`, introduced during local testing | |||||
# 7. `kitchen.vagrant.yml`, which contains Embedded Ruby (ERB) template syntax | |||||
# 8. All YAML files heavily reliant on Jinja; these can be tackled in a subsequent PR | |||||
ignore: | | |||||
.bundle/ | |||||
.cache/ | |||||
.git/ | |||||
node_modules/ | |||||
test/**/states/**/*.sls | |||||
.kitchen/ | |||||
kitchen.vagrant.yml | |||||
salt/osfamilymap.yaml | |||||
salt/osmap.yaml | |||||
salt/osfingermap.yaml | |||||
yaml-files: | |||||
# Default settings | |||||
- '*.yaml' | |||||
- '*.yml' | |||||
- .salt-lint | |||||
- .yamllint | |||||
# SaltStack Formulas additional settings | |||||
- '*.example' | |||||
- test/**/*.sls | |||||
rules: | rules: | ||||
empty-values: | empty-values: | ||||
forbid-in-block-mappings: true | forbid-in-block-mappings: true |