Update yaml-validate.py to accept files or directories
authorSteven Hardy <shardy@redhat.com>
Tue, 12 Jan 2016 18:46:04 +0000 (18:46 +0000)
committerSteven Hardy <shardy@redhat.com>
Thu, 28 Jan 2016 19:04:25 +0000 (19:04 +0000)
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

tools/yaml-validate.py

index cb5669a..fe690d8 100755 (executable)
@@ -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:')