mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-05-06 23:39:13 -05:00
Add an option to require a specific pre-commit version
This commit is contained in:
@@ -23,6 +23,9 @@ MANIFEST_JSON_SCHEMA = {
|
||||
'exclude': {'type': 'string', 'default': '^$'},
|
||||
'language': {'type': 'string'},
|
||||
'language_version': {'type': 'string', 'default': 'default'},
|
||||
'minimum_pre_commit_version': {
|
||||
'type': 'string', 'default': '0.0.0',
|
||||
},
|
||||
'files': {'type': 'string'},
|
||||
'stages': {
|
||||
'type': 'array',
|
||||
|
||||
@@ -4,6 +4,7 @@ import logging
|
||||
import shutil
|
||||
from collections import defaultdict
|
||||
|
||||
import pkg_resources
|
||||
from cached_property import cached_property
|
||||
|
||||
from pre_commit import git
|
||||
@@ -18,6 +19,10 @@ from pre_commit.prefixed_command_runner import PrefixedCommandRunner
|
||||
|
||||
logger = logging.getLogger('pre_commit')
|
||||
|
||||
_pre_commit_version = pkg_resources.parse_version(
|
||||
pkg_resources.get_distribution('pre-commit').version
|
||||
)
|
||||
|
||||
|
||||
class Repository(object):
|
||||
def __init__(self, repo_config, repo_path_getter):
|
||||
@@ -71,6 +76,18 @@ class Repository(object):
|
||||
)
|
||||
)
|
||||
exit(1)
|
||||
hook_version = pkg_resources.parse_version(
|
||||
self.manifest.hooks[hook['id']]['minimum_pre_commit_version'],
|
||||
)
|
||||
if hook_version > _pre_commit_version:
|
||||
logger.error(
|
||||
'The hook `{0}` requires pre-commit version {1} but '
|
||||
'version {2} is installed. '
|
||||
'Perhaps run `pip install --upgrade pre-commit`.'.format(
|
||||
hook['id'], hook_version, _pre_commit_version,
|
||||
)
|
||||
)
|
||||
exit(1)
|
||||
return tuple(
|
||||
(hook['id'], dict(self.manifest.hooks[hook['id']], **hook))
|
||||
for hook in self.repo_config['hooks']
|
||||
|
||||
Reference in New Issue
Block a user