From db356978d437ed70f7d4f8023d79c43e70c2e0bf Mon Sep 17 00:00:00 2001
From: Kenny Woodson <kwoodson@redhat.com>
Date: Mon, 18 Jan 2016 15:20:23 -0500
Subject: Removing removing scripts and moving to python.

---
 git/yaml_validate.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100755 git/yaml_validate.py

(limited to 'git/yaml_validate.py')

diff --git a/git/yaml_validate.py b/git/yaml_validate.py
new file mode 100755
index 000000000..7e0a08a4b
--- /dev/null
+++ b/git/yaml_validate.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#
+#  python yaml validator for a git commit
+#
+'''
+python yaml validator for a git commit
+'''
+import shutil
+import sys
+import os
+import glob
+import tempfile
+import subprocess
+import yaml
+
+def get_changes(oldrev, newrev, tempdir):
+    '''Get a list of git changes from oldrev to newrev'''
+    proc = subprocess.Popen(['/usr/bin/git', 'diff', '--name-only', oldrev,
+                             newrev, '--diff-filter=ACM'], stdout=subprocess.PIPE)
+    proc.wait()
+    files = proc.stdout.read().strip().split('\n')
+
+    # No file changes
+    if not files:
+        return []
+
+    cmd = '/usr/bin/git archive %s %s | /bin/tar x -C %s' % (newrev, " ".join(files), tempdir)
+    proc = subprocess.Popen(cmd, shell=True)
+    proc.wait()
+
+    return [fmod for fmod in glob.glob('%s/**/*' % tempdir) if not os.path.isdir(fmod)]
+
+def main():
+    '''
+    Perform yaml validation
+    '''
+    results = []
+    try:
+        tmpdir = tempfile.mkdtemp(prefix='jenkins-git-')
+        old, new, _ = sys.argv[1:]
+
+        for file_mod in get_changes(old, new, tmpdir):
+
+            print "+++++++ Received: %s" % file_mod
+
+            if not file_mod.endswith('.yml') or not file_mod.endswith('.yaml'):
+                continue
+
+            try:
+                yaml.load(file_mod)
+                results.append(True)
+
+            except yaml.scanner.ScannerError as yerr:
+                print yerr.message
+                results.append(False)
+    finally:
+        shutil.rmtree(tmpdir)
+
+    if not all(results):
+        sys.exit(1)
+
+if __name__ == "__main__":
+    main()
-- 
cgit v1.2.3