A linter for YAML files.
Go to file
Adrien Vergé 9235c68496 cli: Restore ignoration of files passed as command-line arguments
Commit 2344380 "Cleanly skip broken symlinks that are ignored" fixed a
problem on symbolic links but also introduced a change on how ignored
files should be treated, depending on whether they're explicitely passed
as command-line arguments or not [^1].

This change is annoying for users that dynamically build the list of
files to pass as arguments, e.g. [^2]:

    find -name '*\.yaml' | xargs yamllint

The present commit adds unit tests for `yamllint [FILES]...` and
`yamllint --list-files [FILES]...`, that passed with previous version
1.34.0, and restore the behavior of this version.

As a result it also reverts the API change of commit 2344380 on
`yamllint.linter.run(stream, config)`.

[^1]: https://github.com/adrienverge/yamllint/issues/657#issuecomment-1948009315
[^2]: https://github.com/adrienverge/yamllint/issues/657#issuecomment-1948093680
2024-02-16 11:48:22 +01:00
.github/workflows build: Restore official Read the Docs theme 2024-02-06 15:54:53 +01:00
docs build: Restore official Read the Docs theme 2024-02-06 15:54:53 +01:00
tests cli: Restore ignoration of files passed as command-line arguments 2024-02-16 11:48:22 +01:00
yamllint cli: Restore ignoration of files passed as command-line arguments 2024-02-16 11:48:22 +01:00
.flake8 Revert replacement of flake8 with ruff 2024-02-02 10:05:14 +01:00
.gitignore gitignore: Add /.eggs 2020-09-27 10:06:33 +02:00
.pre-commit-hooks.yaml pre-commit is now served over https! 2018-03-03 08:01:24 +01:00
.readthedocs.yaml build: Restore official Read the Docs theme 2024-02-06 15:54:53 +01:00
CHANGELOG.rst yamllint version 1.35.0 2024-02-15 09:59:18 +01:00
CONTRIBUTING.rst Revert replacement of flake8 with ruff 2024-02-02 10:05:14 +01:00
LICENSE License: Update to latest version of GPLv3 2022-08-06 15:14:57 +02:00
pyproject.toml Revert replacement of flake8 with ruff 2024-02-02 10:05:14 +01:00
README.rst README: Update CI status badge 2023-04-14 15:18:30 +02:00
setup.py build: Migrate from setup.py to pyproject.toml 2023-04-21 14:15:53 +02:00

yamllint
========

A linter for YAML files.

yamllint does not only check for syntax validity, but for weirdnesses like key
repetition and cosmetic problems such as lines length, trailing spaces,
indentation, etc.

.. image::
   https://github.com/adrienverge/yamllint/actions/workflows/ci.yaml/badge.svg?branch=master
   :target: https://github.com/adrienverge/yamllint/actions/workflows/ci.yaml?query=branch%3Amaster
   :alt: CI tests status
.. image::
   https://coveralls.io/repos/github/adrienverge/yamllint/badge.svg?branch=master
   :target: https://coveralls.io/github/adrienverge/yamllint?branch=master
   :alt: Code coverage status
.. image:: https://readthedocs.org/projects/yamllint/badge/?version=latest
   :target: https://yamllint.readthedocs.io/en/latest/?badge=latest
   :alt: Documentation status

Written in Python (compatible with Python 3 only).

Documentation
-------------

https://yamllint.readthedocs.io/

Overview
--------

Screenshot
^^^^^^^^^^

.. image:: docs/screenshot.png
   :alt: yamllint screenshot

Installation
^^^^^^^^^^^^

Using pip, the Python package manager:

.. code:: bash

 pip install --user yamllint

yamllint is also packaged for all major operating systems, see installation
examples (``dnf``, ``apt-get``...) `in the documentation
<https://yamllint.readthedocs.io/en/stable/quickstart.html>`_.

Usage
^^^^^

.. code:: bash

 # Lint one or more files
 yamllint my_file.yml my_other_file.yaml ...

.. code:: bash

 # Lint all YAML files in a directory
 yamllint .

.. code:: bash

 # Use a pre-defined lint configuration
 yamllint -d relaxed file.yaml

 # Use a custom lint configuration
 yamllint -c /path/to/myconfig file-to-lint.yaml

.. code:: bash

 # Output a parsable format (for syntax checking in editors like Vim, emacs...)
 yamllint -f parsable file.yaml

`Read more in the complete documentation! <https://yamllint.readthedocs.io/>`__

Features
^^^^^^^^

Here is a yamllint configuration file example:

.. code:: yaml

 extends: default

 rules:
   # 80 chars should be enough, but don't fail if a line is longer
   line-length:
     max: 80
     level: warning

   # don't bother me with this rule
   indentation: disable

Within a YAML file, special comments can be used to disable checks for a single
line:

.. code:: yaml

 This line is waaaaaaaaaay too long  # yamllint disable-line

or for a whole block:

.. code:: yaml

 # yamllint disable rule:colons
 - Lorem       : ipsum
   dolor       : sit amet,
   consectetur : adipiscing elit
 # yamllint enable

Specific files can be ignored (totally or for some rules only) using a
``.gitignore``-style pattern:

.. code:: yaml

 # For all rules
 ignore: |
   *.dont-lint-me.yaml
   /bin/
   !/bin/*.lint-me-anyway.yaml

 rules:
   key-duplicates:
     ignore: |
       generated
       *.template.yaml
   trailing-spaces:
     ignore: |
       *.ignore-trailing-spaces.yaml
       /ascii-art/*

`Read more in the complete documentation! <https://yamllint.readthedocs.io/>`__

License
-------

`GPL version 3 <LICENSE>`_