From b425ca2b1c2fad305478065f9d2acb40067289ed Mon Sep 17 00:00:00 2001 From: Joe Kerhin <37146185+jkerhin@users.noreply.github.com> Date: Sat, 9 Dec 2023 21:21:16 +0000 Subject: [PATCH] Adds ERROR log message on missing manifest When attempting to use pre-commit with a repository that does not contain a .pre-commit-config.yaml, log an ERROR level message with information about the problem repo before bailing out. --- pre_commit/repository.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pre_commit/repository.py b/pre_commit/repository.py index 439a09b4..fbe1d0f1 100644 --- a/pre_commit/repository.py +++ b/pre_commit/repository.py @@ -9,6 +9,7 @@ from typing import Any import pre_commit.constants as C from pre_commit.all_languages import languages +from pre_commit.clientlib import InvalidManifestError from pre_commit.clientlib import load_manifest from pre_commit.clientlib import LOCAL from pre_commit.clientlib import META @@ -194,7 +195,15 @@ def _cloned_repository_hooks( ) -> tuple[Hook, ...]: repo, rev = repo_config['repo'], repo_config['rev'] manifest_path = os.path.join(store.clone(repo, rev), C.MANIFEST_FILE) - by_id = {hook['id']: hook for hook in load_manifest(manifest_path)} + try: + by_id = {hook['id']: hook for hook in load_manifest(manifest_path)} + except InvalidManifestError as err: + if 'is not a file' in err.args[0].error_msg: + logger.error( + f'Could not find {C.MANIFEST_FILE} in {repo_config["repo"]} - ' + f'Is {repo_config["repo"]} configured to use pre-config?', + ) + raise err for hook in repo_config['hooks']: if hook['id'] not in by_id: