55import pre_commit .constants as C
66from pre_commit .clientlib .validate_manifest import validate_manifest
77from pre_commit .hooks_workspace import in_hooks_workspace
8+ from pre_commit .languages .all import languages
89from pre_commit .util import cached_property
910
1011
11- def install_python (repo ):
12- assert local .path ('setup.py' ).exists ()
13- local ['virtualenv' ]['py_env' ]()
14- local ['bash' ]['-c' , 'source py_env/bin/activate && pip install .' ]()
15-
16-
17- def install_ruby (repo ):
18- raise NotImplementedError
19-
20-
21- def install_node (repo ):
22- raise NotImplementedError
23-
24-
25- language_to_repo_setup_strategy = {
26- 'python' : install_python ,
27- 'ruby' : install_ruby ,
28- 'node' : install_node ,
29- }
30-
31-
3212class Repository (object ):
3313 def __init__ (self , repo_config ):
3414 self .repo_config = repo_config
@@ -84,4 +64,9 @@ def install(self):
8464 with self .in_checkout ():
8565 for language in C .SUPPORTED_LANGUAGES :
8666 if language in self .languages :
87- language_to_repo_setup_strategy [language ](self )
67+ languages [language ].install_environment ()
68+
69+ def run_hook (self , hook_id , file_args ):
70+ with self .in_checkout ():
71+ hook = self .hooks [hook_id ]
72+ return languages [hook ['language' ]].run_hook (hook , file_args )
0 commit comments