@@ -91,6 +91,22 @@ def _install_all(venvs, repo_url):
9191 _write_installed_state (cmd_runner , venv , state )
9292
9393
94+ def _validate_minimum_version (hook ):
95+ hook_version = pkg_resources .parse_version (
96+ hook ['minimum_pre_commit_version' ],
97+ )
98+ if hook_version > C .VERSION_PARSED :
99+ logger .error (
100+ 'The hook `{}` requires pre-commit version {} but '
101+ 'version {} is installed. '
102+ 'Perhaps run `pip install --upgrade pre-commit`.' .format (
103+ hook ['id' ], hook_version , C .VERSION_PARSED ,
104+ )
105+ )
106+ exit (1 )
107+ return hook
108+
109+
94110class Repository (object ):
95111 def __init__ (self , repo_config , store ):
96112 self .repo_config = repo_config
@@ -133,18 +149,9 @@ def hooks(self):
133149 )
134150 )
135151 exit (1 )
136- hook_version = pkg_resources .parse_version (
137- self .manifest .hooks [hook ['id' ]]['minimum_pre_commit_version' ],
138- )
139- if hook_version > C .VERSION_PARSED :
140- logger .error (
141- 'The hook `{}` requires pre-commit version {} but '
142- 'version {} is installed. '
143- 'Perhaps run `pip install --upgrade pre-commit`.' .format (
144- hook ['id' ], hook_version , C .VERSION_PARSED ,
145- )
146- )
147- exit (1 )
152+
153+ _validate_minimum_version (self .manifest .hooks [hook ['id' ]])
154+
148155 return tuple (
149156 (hook ['id' ], dict (self .manifest .hooks [hook ['id' ]], ** hook ))
150157 for hook in self .repo_config ['hooks' ]
@@ -198,7 +205,12 @@ def manifest(self):
198205 @cached_property
199206 def hooks (self ):
200207 return tuple (
201- (hook ['id' ], apply_defaults (hook , MANIFEST_JSON_SCHEMA ['items' ]))
208+ (
209+ hook ['id' ],
210+ _validate_minimum_version (apply_defaults (
211+ hook , MANIFEST_JSON_SCHEMA ['items' ],
212+ )),
213+ )
202214 for hook in self .repo_config ['hooks' ]
203215 )
204216
0 commit comments