summaryrefslogtreecommitdiffstats
path: root/tools/generate_docs.py
blob: 9b2b5dc7ee9e8f270feeb69dab35d6102aecd20a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!python3
"""Script that tests rule markdown documentation."""
from __future__ import annotations

import subprocess
from pathlib import Path

from ansiblelint.cli import get_rules_dirs
from ansiblelint.config import Options
from ansiblelint.rules import RulesCollection, TransformMixin

if __name__ == "__main__":
    subprocess.run(
        "ansible-lint -L --format=md",  # noqa: S607
        shell=True,  # noqa: S602
        check=True,
        stdout=subprocess.DEVNULL,
    )

    file = Path("docs/_autofix_rules.md")
    options = Options()
    options.rulesdirs = get_rules_dirs([])
    options.list_rules = True
    rules = RulesCollection(
        options.rulesdirs,
        options=options,
    )
    contents: list[str] = []
    for rule in rules.alphabetical():
        if issubclass(rule.__class__, TransformMixin):
            url = f"rules/{rule.id}.md"
            contents.append(f"- [{rule.id}]({url})\n")

    # Write the injected contents to the file.
    with file.open(encoding="utf-8", mode="w") as fh:
        fh.writelines(contents)