diff --git a/src/compwa_policy/check_dev_files/ty.py b/src/compwa_policy/check_dev_files/ty.py index efc4da3e..1e78f411 100644 --- a/src/compwa_policy/check_dev_files/ty.py +++ b/src/compwa_policy/check_dev_files/ty.py @@ -8,6 +8,7 @@ from ruamel.yaml.comments import CommentedSeq from compwa_policy.utilities import vscode +from compwa_policy.utilities.precommit.getters import find_hook from compwa_policy.utilities.precommit.struct import Hook, Repo from compwa_policy.utilities.pyproject import ModifiablePyproject from compwa_policy.utilities.readme import add_badge, remove_badge @@ -91,6 +92,11 @@ def _update_precommit_config(precommit: ModifiablePrecommit) -> None: language="system", types_or=types_or, ) + existing_hook = find_hook(precommit.document, r"^ty$") + if existing_hook: + exclude = existing_hook.get("exclude") + if exclude: + hook["exclude"] = exclude expected_repo = Repo(repo="local", hooks=[hook]) precommit.update_single_hook_repo(expected_repo) diff --git a/src/compwa_policy/utilities/precommit/getters.py b/src/compwa_policy/utilities/precommit/getters.py index f14b3fce..7823e050 100644 --- a/src/compwa_policy/utilities/precommit/getters.py +++ b/src/compwa_policy/utilities/precommit/getters.py @@ -5,7 +5,18 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: - from compwa_policy.utilities.precommit.struct import PrecommitConfig, Repo + from compwa_policy.utilities.precommit.struct import Hook, PrecommitConfig, Repo + + +def find_hook(config: PrecommitConfig, search_pattern: str) -> Hook | None: + """Find pre-commit hook definition in pre-commit config.""" + repos = config.get("repos", []) + for repo in repos: + hooks = repo.get("hooks", []) + for hook in hooks: + if re.search(search_pattern, hook.get("id", "")): + return hook + return None def find_repo(config: PrecommitConfig, search_pattern: str) -> Repo | None: