Merge pull request #57 from pre-commit/dry_validate

Dry validate
This commit is contained in:
Anthony Sottile 2014-04-03 21:03:00 -07:00
commit 5a7044edcc
4 changed files with 36 additions and 44 deletions

View file

@ -1,10 +1,14 @@
from __future__ import print_function
import argparse
import jsonschema
import jsonschema.exceptions
import os.path
import yaml
from pre_commit.jsonschema_extensions import apply_defaults
from pre_commit.util import entry
def get_validator(
@ -48,3 +52,25 @@ def get_validator(
return obj
return validate
def get_run_function(filenames_help, validate_strategy, exception_cls):
@entry
def run(argv):
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help=filenames_help)
args = parser.parse_args(argv)
retval = 0
for filename in args.filenames:
try:
validate_strategy(filename)
except exception_cls as e:
print(e.args[0])
# If there was an inner exception, print the stringified
# version of that.
if len(e.args) > 1:
print(str(e.args[1]))
retval = 1
return retval
return run

View file

@ -1,12 +1,9 @@
from __future__ import print_function
import argparse
import re
import sys
from pre_commit.clientlib.validate_base import get_run_function
from pre_commit.clientlib.validate_base import get_validator
from pre_commit.util import entry
class InvalidConfigError(ValueError): pass
@ -69,24 +66,7 @@ load_config = get_validator(
)
@entry
def run(argv):
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Config filenames.')
args = parser.parse_args(argv)
retval = 0
for filename in args.filenames:
try:
load_config(filename)
except InvalidConfigError as e:
print(e.args[0])
# If we have more than one exception argument print the stringified
# version
if len(e.args) > 1:
print(str(e.args[1]))
retval = 1
return retval
run = get_run_function('Config filenames.', load_config, InvalidConfigError)
if __name__ == '__main__':

View file

@ -1,12 +1,9 @@
from __future__ import print_function
import argparse
import sys
from pre_commit.clientlib.validate_base import get_run_function
from pre_commit.clientlib.validate_base import get_validator
from pre_commit.languages.all import all_languages
from pre_commit.util import entry
class InvalidManifestError(ValueError): pass
@ -51,24 +48,11 @@ load_manifest = get_validator(
)
@entry
def run(argv):
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Manifest filenames.')
args = parser.parse_args(argv)
retval = 0
for filename in args.filenames:
try:
load_manifest(filename)
except InvalidManifestError as e:
print(e.args[0])
# If we have more than one exception argument print the stringified
# version
if len(e.args) > 1:
print(str(e.args[1]))
retval = 1
return retval
run = get_run_function(
'Manifest filenames.',
load_manifest,
InvalidManifestError,
)
if __name__ == '__main__':

View file

@ -2,6 +2,8 @@
# Testing requirements
coverage
# Fuck you ipython
ipython<2.0.0
ipdb
mock
pyflakes