mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-04-15 18:11:48 +04:00
Merge 8c9a39707e into cc0f40fc96
This commit is contained in:
commit
625761945f
3 changed files with 30 additions and 8 deletions
|
|
@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
CONFIG_FILE = '.pre-commit-config.yaml'
|
CONFIG_FILE = '.pre-commit-config.yaml'
|
||||||
|
|
||||||
|
EXTERNAL_MANIFEST_FILE = '.pre-commit-hooks-config.yaml'
|
||||||
MANIFEST_FILE = 'hooks.yaml'
|
MANIFEST_FILE = 'hooks.yaml'
|
||||||
|
|
||||||
YAML_DUMP_KWARGS = {
|
YAML_DUMP_KWARGS = {
|
||||||
|
|
|
||||||
|
|
@ -8,17 +8,34 @@ import pre_commit.constants as C
|
||||||
from pre_commit.clientlib.validate_manifest import load_manifest
|
from pre_commit.clientlib.validate_manifest import load_manifest
|
||||||
|
|
||||||
|
|
||||||
class Manifest(object):
|
class BaseManifest(object):
|
||||||
def __init__(self, repo_path_getter):
|
def __init__(self):
|
||||||
self.repo_path_getter = repo_path_getter
|
pass
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def manifest_contents(self):
|
def manifest_contents(self):
|
||||||
manifest_path = os.path.join(
|
return load_manifest(self.manifest_path)
|
||||||
self.repo_path_getter.repo_path, C.MANIFEST_FILE,
|
|
||||||
)
|
|
||||||
return load_manifest(manifest_path)
|
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def hooks(self):
|
def hooks(self):
|
||||||
return dict((hook['id'], hook) for hook in self.manifest_contents)
|
return dict((hook['id'], hook) for hook in self.manifest_contents)
|
||||||
|
|
||||||
|
def exists(self):
|
||||||
|
return os.path.isfile(self.manifest_path)
|
||||||
|
|
||||||
|
|
||||||
|
class Manifest(BaseManifest):
|
||||||
|
def __init__(self, repo_path_getter):
|
||||||
|
super(Manifest, self).__init__()
|
||||||
|
|
||||||
|
self.repo_path_getter = repo_path_getter
|
||||||
|
self.manifest_path = os.path.join(
|
||||||
|
self.repo_path_getter.repo_path, C.MANIFEST_FILE,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ExternalManifest(BaseManifest):
|
||||||
|
def __init__(self, path):
|
||||||
|
super(ExternalManifest, self).__init__()
|
||||||
|
self.path = path
|
||||||
|
self.manifest_path = os.path.join(path, C.EXTERNAL_MANIFEST_FILE)
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ from pre_commit.clientlib.validate_manifest import MANIFEST_JSON_SCHEMA
|
||||||
from pre_commit.jsonschema_extensions import apply_defaults
|
from pre_commit.jsonschema_extensions import apply_defaults
|
||||||
from pre_commit.languages.all import languages
|
from pre_commit.languages.all import languages
|
||||||
from pre_commit.languages.helpers import environment_dir
|
from pre_commit.languages.helpers import environment_dir
|
||||||
|
from pre_commit.manifest import ExternalManifest
|
||||||
from pre_commit.manifest import Manifest
|
from pre_commit.manifest import Manifest
|
||||||
from pre_commit.prefixed_command_runner import PrefixedCommandRunner
|
from pre_commit.prefixed_command_runner import PrefixedCommandRunner
|
||||||
|
|
||||||
|
|
@ -104,7 +105,10 @@ class Repository(object):
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def manifest(self):
|
def manifest(self):
|
||||||
return Manifest(self.repo_path_getter)
|
m = Manifest(self.repo_path_getter)
|
||||||
|
if not m.exists():
|
||||||
|
m = ExternalManifest(git.get_root())
|
||||||
|
return m
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def cmd_runner(self):
|
def cmd_runner(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue