From c9abbdde5d5d458579148551dea25a4a0964287a Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sun, 4 Sep 2022 10:33:39 +0200 Subject: [PATCH] Feat: ignore directives --- clean_rst/main.py | 32 +++++++++++++++++++++++++------- poetry.lock | 19 +++++++++++++++++-- pyproject.toml | 1 + 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/clean_rst/main.py b/clean_rst/main.py index 2fbc2b7..30fe05c 100644 --- a/clean_rst/main.py +++ b/clean_rst/main.py @@ -1,9 +1,10 @@ import logging import re -import sys import time +import click import restructuredtext_lint +from docutils.parsers.rst.directives import register_directive from git import Repo formatter = logging.Formatter("%(name)s :: %(levelname)s :: %(message)s") @@ -39,12 +40,20 @@ def select_by_extension(files, ext="rst"): # Rst linter -def rst_lint(filename): +def rst_lint(filename, ignore_directives=["big_button"]): with open(filename, "r") as f: errors = restructuredtext_lint.lint(f.read()) + filtered_errors = [] for e in errors: - logger.warning(f"{filename} \n{e.full_message}\n") - return errors + if "directive" in e.message and any( + [i in e.message for i in ignore_directives] + ): + pass + else: + logger.warning(f"{filename} \n{e.full_message}\n") + filtered_errors.append(e) + + return filtered_errors # Rst parameters normalize @@ -115,7 +124,16 @@ NORMALIZERS_NEW = { } -def main(argv: list[str] = None) -> int: +@click.command() +@click.argument("commited_files", nargs=-1) +@click.option( + "--ignore_directive", + multiple=True, + default=[], + help="List of ignored directives for restructuredtext_lint", +) +def main(commited_files: list, ignore_directive: list) -> int: + r = Repo() diff = get_commited_files(r) @@ -124,11 +142,11 @@ def main(argv: list[str] = None) -> int: # New files for f in select_by_extension(diff["A"], "rst"): - errors += rst_lint(f) + errors += rst_lint(f, ignore_directives=ignore_directive) modified += normalize_file(f, NORMALIZERS_NEW) # Modified files for f in select_by_extension(diff["M"], "rst"): - errors += rst_lint(f) + errors += rst_lint(f, ignore_directives=ignore_directive) modified += normalize_file(f, NORMALIZERS_MODIFIED) return int(len(errors) > 0) diff --git a/poetry.lock b/poetry.lock index bc4e8e2..9f4b517 100644 --- a/poetry.lock +++ b/poetry.lock @@ -28,11 +28,22 @@ category = "dev" optional = false python-versions = ">=3.6.1" +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.5" description = "Cross-platform colored terminal text." -category = "dev" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" @@ -267,7 +278,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "f42f1e61719183591304472b3ed90dfbd50fb6ff8ecbd502c7c23c0cd85ce935" +content-hash = "53a66536a5ce62f85d18096d9d1d6586fd4438774cc7f2136391de830081e51c" [metadata.files] atomicwrites = [ @@ -281,6 +292,10 @@ cfgv = [ {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, ] +click = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] colorama = [ {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, diff --git a/pyproject.toml b/pyproject.toml index 6d72503..019c9c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ clean-rst = "clean_rst.main:main" python = "^3.10" restructuredtext-lint = "^1.4.0" GitPython = "^3.1.27" +click = "^8.1.3" [tool.poetry.dev-dependencies] pytest = "^5.2"