Update yaml-validate.py to accept files or directories

For developer usage it's helpful to have the choice to provide either
an individual files, list of files, or some mix of files and directories
as you don't necessarily want to walk everything all the time.

Change-Id: I050de123bba51402a0dbb42d71e97fd27d7ce4bc
This commit is contained in:
Steven Hardy 2016-01-12 18:46:04 +00:00
parent 4c2e66a6d0
commit e6273f9376
1 changed files with 30 additions and 11 deletions

View File

@ -16,11 +16,13 @@ import sys
import traceback
import yaml
base_path = sys.argv[1]
exit_val = 0
failed_files = []
def exit_usage():
print('Usage %s <yaml file or directory>' % sys.argv[0])
sys.exit(1)
def validate(filename):
print('Validating %s' % filename)
try:
yaml.load(open(filename).read())
except Exception:
@ -28,14 +30,31 @@ def validate(filename):
return 1
return 0
for subdir, dirs, files in os.walk(base_path):
for f in files:
if f.endswith('.yaml'):
file_path = os.path.join(subdir, f)
failed = validate(file_path)
if failed:
failed_files.append(file_path)
exit_val |= failed
if len(sys.argv) < 2:
exit_usage()
path_args = sys.argv[1:]
exit_val = 0
failed_files = []
for base_path in path_args:
if os.path.isdir(base_path):
for subdir, dirs, files in os.walk(base_path):
for f in files:
if f.endswith('.yaml'):
file_path = os.path.join(subdir, f)
failed = validate(file_path)
if failed:
failed_files.append(file_path)
exit_val |= failed
elif os.path.isfile(base_path) and base_path.endswith('.yaml'):
failed = validate(base_path)
if failed:
failed_files.append(base_path)
exit_val |= failed
else:
print('Unexpected argument %s' % base_path)
exit_usage()
if failed_files:
print('Validation failed on:')