From fbdd8406922a77b2bcaad40a1eae80a8601b8ab6 Mon Sep 17 00:00:00 2001 From: Thierry Deo Date: Wed, 15 Feb 2017 11:31:48 +0100 Subject: [PATCH] Use a proper runner for local hooks --- pre_commit/repository.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pre_commit/repository.py b/pre_commit/repository.py index 7605d837..596d7471 100644 --- a/pre_commit/repository.py +++ b/pre_commit/repository.py @@ -11,6 +11,7 @@ import pkg_resources from cached_property import cached_property from pre_commit import five +from pre_commit import git from pre_commit.clientlib.validate_config import is_local_hooks from pre_commit.clientlib.validate_manifest import MANIFEST_JSON_SCHEMA from pre_commit.jsonschema_extensions import apply_defaults @@ -104,6 +105,16 @@ class Repository(object): def cmd_runner(self): return PrefixedCommandRunner(self.repo_path_getter.repo_path) + @cached_property + def local_cmd_runner(self): + return self.cmd_runner + + def language_cmd_runner(self, language): + if language in ['script', 'system']: + return self.local_cmd_runner + else: + return self.cmd_runner + def require_installed(self): if self.__installed: return @@ -193,7 +204,7 @@ class Repository(object): """ self.require_installed() return languages[hook['language']].run_hook( - self.cmd_runner, hook, file_args, + self.language_cmd_runner(hook['language']), hook, file_args, ) @@ -205,6 +216,10 @@ class LocalRepository(Repository): for hook in self.repo_config['hooks'] ) + @cached_property + def local_cmd_runner(self): + return PrefixedCommandRunner(git.get_root()) + class _UniqueList(list): def __init__(self):