|
1 | 1 | from __future__ import unicode_literals |
2 | 2 |
|
| 3 | +import logging |
3 | 4 | import shutil |
4 | 5 |
|
5 | 6 | from cached_property import cached_property |
|
9 | 10 | from pre_commit.prefixed_command_runner import PrefixedCommandRunner |
10 | 11 |
|
11 | 12 |
|
| 13 | +logger = logging.getLogger('pre_commit') |
| 14 | + |
| 15 | + |
12 | 16 | class Repository(object): |
13 | 17 | def __init__(self, repo_config, repo_path_getter): |
14 | 18 | self.repo_config = repo_config |
@@ -62,14 +66,28 @@ def require_installed(self): |
62 | 66 |
|
63 | 67 | def install(self): |
64 | 68 | """Install the hook repository.""" |
65 | | - for language_name, language_version in self.languages: |
| 69 | + def language_is_installed(language_name): |
66 | 70 | language = languages[language_name] |
67 | | - if ( |
| 71 | + return ( |
68 | 72 | language.ENVIRONMENT_DIR is None or |
69 | 73 | self.cmd_runner.exists(language.ENVIRONMENT_DIR, '.installed') |
70 | | - ): |
71 | | - # The language is already installed |
| 74 | + ) |
| 75 | + |
| 76 | + if not all( |
| 77 | + language_is_installed(language_name) |
| 78 | + for language_name, _ in self.languages |
| 79 | + ): |
| 80 | + logger.info( |
| 81 | + 'Installing environment for {0}.'.format(self.repo_url) |
| 82 | + ) |
| 83 | + logger.info('Once installed this environment will be reused.') |
| 84 | + logger.info('This may take a few minutes...') |
| 85 | + |
| 86 | + for language_name, language_version in self.languages: |
| 87 | + language = languages[language_name] |
| 88 | + if language_is_installed(language_name): |
72 | 89 | continue |
| 90 | + |
73 | 91 | # There's potentially incomplete cleanup from previous runs |
74 | 92 | # Clean it up! |
75 | 93 | if self.cmd_runner.exists(language.ENVIRONMENT_DIR): |
|
0 commit comments