# Yamllint

A linter for YAML files written in Python and compatible with Python 3 only.

## TL;DR

```sh
# Use a specific configuration file.
yamllint -c /path/to/config file.yaml

# Pass custom configuration options on the CLI.
yamllint -d "{extends: relaxed, rules: {line-length: {max: 120}}}" file.yaml
```

## Configuration

`yamllint` uses a set of [rules] to check YAML files for problems. Each rule is independent from the others, and can be enabled, disabled or tweaked. All these settings can be gathered in a configuration file.

To use a custom configuration file, use the `-c` option:

```sh
yamllint -c /path/to/config file.yaml
```

If no such option is provided, `yamllint` will look for a configuration file in the following locations (by order of preference):

- `.yamllint`, `.yamllint.yaml` or `.yamllint.yml` in the current working directory
- the file referenced by `$YAMLLINT_CONFIG_FILE`, if set
- `$XDG_CONFIG_HOME/yamllint/config`
- `~/.config/yamllint/config`

Finally, if no config file is found the default configuration is applied.

You can avoid the need to redefine every rule when writing a custom configuration file `extend`ing the default one or any other already-existing configuration file:

```yaml
extends: default
rules:
  comments-indentation: disable   # don't bother me at all with this rule
```

```yaml
extends: relaxed
  line-length:   # just warn if a line is longer than 120 chars, instead of failing at 81
    max: 120
    level: warning
  indentation:   # loosen up on block sequences indentation
    indent-sequences: whatever
```

## Further readings

- [GitHub] page
- Yamllint's [documentation]
- [Rules]

[documentation]: https://yamllint.readthedocs.io/en/stable
[github]: https://github.com/adrienverge/yamllint
[rules]: https://yamllint.readthedocs.io/en/stable/rules.html
