Kaynağa Gözat

Adding --verfiy to generate script.

Kenny Woodson 8 yıl önce
ebeveyn
işleme
24a504f03a

+ 10 - 0
roles/lib_openshift/src/doc/generated

@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+# pylint: disable=missing-docstring
+# flake8: noqa: T001
+#     ___ ___ _  _ ___ ___    _ _____ ___ ___
+#    / __| __| \| | __| _ \  /_\_   _| __|   \
+#   | (_ | _|| .` | _||   / / _ \| | | _|| |) |
+#    \___|___|_|\_|___|_|_\/_/_\_\_|_|___|___/_ _____
+#   |   \ / _ \  | \| |/ _ \_   _| | __|   \_ _|_   _|
+#   | |) | (_) | | .` | (_) || |   | _|| |) | |  | |
+#   |___/ \___/  |_|\_|\___/ |_|   |___|___/___| |_|

+ 44 - 23
roles/lib_openshift/src/generate.py

@@ -3,43 +3,64 @@
   Generate the openshift-ansible/roles/lib_openshift_cli/library/ modules.
 '''
 
+import argparse
 import os
 import yaml
-
-# pylint: disable=anomalous-backslash-in-string
-GEN_STR = "#!/usr/bin/env python\n" + \
-          "# pylint: disable=missing-docstring\n" + \
-          "# flake8: noqa: T001\n" + \
-          "#     ___ ___ _  _ ___ ___    _ _____ ___ ___\n" + \
-          "#    / __| __| \| | __| _ \  /_\_   _| __|   \\\n" + \
-          "#   | (_ | _|| .` | _||   / / _ \| | | _|| |) |\n" + \
-          "#    \___|___|_|\_|___|_|_\/_/_\_\_|_|___|___/_ _____\n" + \
-          "#   |   \ / _ \  | \| |/ _ \_   _| | __|   \_ _|_   _|\n" + \
-          "#   | |) | (_) | | .` | (_) || |   | _|| |) | |  | |\n" + \
-          "#   |___/ \___/  |_|\_|\___/ |_|   |___|___/___| |_|\n"
+import six
 
 OPENSHIFT_ANSIBLE_PATH = os.path.dirname(os.path.realpath(__file__))
 OPENSHIFT_ANSIBLE_SOURCES_PATH = os.path.join(OPENSHIFT_ANSIBLE_PATH, 'sources.yml')  # noqa: E501
 
 
+class GenerateAnsibleException(Exception):
+    '''General Exception for generate function'''
+    pass
+
+
+def parse_args():
+    '''parse arguments to generate'''
+    parser = argparse.ArgumentParser(description="Generate ansible modules.")
+    parser.add_argument('--verify', action='store_true', default=False,
+                        help='Verify library code matches the generated code.')
+
+    return parser.parse_args()
+
+
+def generate(parts):
+    '''generate the source code for the ansible modules'''
+
+    data = six.StringIO()
+    for fpart in parts:
+        # first line is pylint disable so skip it
+        with open(os.path.join(OPENSHIFT_ANSIBLE_PATH, fpart)) as pfd:
+            for idx, line in enumerate(pfd):
+                if idx in [0, 1] and 'flake8: noqa' in line or 'pylint: skip-file' in line:  # noqa: E501
+                    continue
+
+                data.write(line)
+
+    return data
+
+
 def main():
     ''' combine the necessary files to create the ansible module '''
+    args = parse_args()
 
     library = os.path.join(OPENSHIFT_ANSIBLE_PATH, '..', 'library/')
     sources = yaml.load(open(OPENSHIFT_ANSIBLE_SOURCES_PATH).read())
+
     for fname, parts in sources.items():
-        with open(os.path.join(library, fname), 'w') as afd:
+        data = generate(parts)
+        fname = os.path.join(library, fname)
+        if args.verify:
+            if not open(fname).read() == data.getvalue():
+                raise GenerateAnsibleException('Generated content does not match for %s' % fname)
+
+            continue
+
+        with open(fname, 'w') as afd:
             afd.seek(0)
-            afd.write(GEN_STR)
-            for fpart in parts:
-                with open(os.path.join(OPENSHIFT_ANSIBLE_PATH, fpart)) as pfd:
-                    # first line is pylint disable so skip it
-                    for idx, line in enumerate(pfd):
-                        if idx in [0, 1] and 'flake8: noqa' in line \
-                           or 'pylint: skip-file' in line:
-                            continue
-
-                        afd.write(line)
+            afd.write(data.getvalue())
 
 
 if __name__ == '__main__':

+ 2 - 0
roles/lib_openshift/src/sources.yml

@@ -1,5 +1,6 @@
 ---
 oc_route.py:
+- doc/generated
 - doc/license
 - lib/import.py
 - doc/route
@@ -9,6 +10,7 @@ oc_route.py:
 - class/oc_route.py
 - ansible/oc_route.py
 oc_edit.py:
+- doc/generated
 - doc/license
 - lib/import.py
 - doc/edit

+ 9 - 0
roles/lib_utils/src/doc/generated

@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+# pylint: disable=missing-docstring
+#     ___ ___ _  _ ___ ___    _ _____ ___ ___
+#    / __| __| \| | __| _ \  /_\_   _| __|   \
+#   | (_ | _|| .` | _||   / / _ \| | | _|| |) |
+#    \___|___|_|\_|___|_|_\/_/_\_\_|_|___|___/_ _____
+#   |   \ / _ \  | \| |/ _ \_   _| | __|   \_ _|_   _|
+#   | |) | (_) | | .` | (_) || |   | _|| |) | |  | |
+#   |___/ \___/  |_|\_|\___/ |_|   |___|___/___| |_|

+ 45 - 23
roles/lib_utils/src/generate.py

@@ -3,42 +3,64 @@
   Generate the openshift-ansible/roles/lib_openshift_cli/library/ modules.
 '''
 
+import argparse
 import os
+import six
 import yaml
 
-# pylint: disable=anomalous-backslash-in-string
-GEN_STR = "#!/usr/bin/env python\n" + \
-          "# pylint: disable=missing-docstring\n" + \
-          "#     ___ ___ _  _ ___ ___    _ _____ ___ ___\n" + \
-          "#    / __| __| \| | __| _ \  /_\_   _| __|   \\\n" + \
-          "#   | (_ | _|| .` | _||   / / _ \| | | _|| |) |\n" + \
-          "#    \___|___|_|\_|___|_|_\/_/_\_\_|_|___|___/_ _____\n" + \
-          "#   |   \ / _ \  | \| |/ _ \_   _| | __|   \_ _|_   _|\n" + \
-          "#   | |) | (_) | | .` | (_) || |   | _|| |) | |  | |\n" + \
-          "#   |___/ \___/  |_|\_|\___/ |_|   |___|___/___| |_|\n"
-
 OPENSHIFT_ANSIBLE_PATH = os.path.dirname(os.path.realpath(__file__))
-OPENSHIFT_ANSIBLE_SOURCES_PATH = os.path.join(OPENSHIFT_ANSIBLE_PATH, 'generate_sources.yml')  # noqa: E501
+OPENSHIFT_ANSIBLE_SOURCES_PATH = os.path.join(OPENSHIFT_ANSIBLE_PATH, 'sources.yml')  # noqa: E501
+
+
+class GenerateAnsibleException(Exception):
+    '''General Exception for generate function'''
+    pass
+
+
+def parse_args():
+    '''parse arguments to generate'''
+    parser = argparse.ArgumentParser(description="Generate ansible modules.")
+    parser.add_argument('--verify', action='store_true', default=False,
+                        help='Verify library code matches the generated code.')
+
+    return parser.parse_args()
+
+
+def generate(parts):
+    '''generate the source code for the ansible modules'''
+
+    data = six.StringIO()
+    for fpart in parts:
+        # first line is pylint disable so skip it
+        with open(os.path.join(OPENSHIFT_ANSIBLE_PATH, fpart)) as pfd:
+            for idx, line in enumerate(pfd):
+                if idx in [0, 1] and 'flake8: noqa' in line or 'pylint: skip-file' in line:  # noqa: E501
+                    continue
+
+                data.write(line)
+
+    return data
 
 
 def main():
     ''' combine the necessary files to create the ansible module '''
+    args = parse_args()
 
     library = os.path.join(OPENSHIFT_ANSIBLE_PATH, '..', 'library/')
     sources = yaml.load(open(OPENSHIFT_ANSIBLE_SOURCES_PATH).read())
+
     for fname, parts in sources.items():
-        with open(os.path.join(library, fname), 'w') as afd:
+        data = generate(parts)
+        fname = os.path.join(library, fname)
+        if args.verify:
+            if not open(fname).read() == data.getvalue():
+                raise GenerateAnsibleException('Generated content does not match for %s' % fname)
+
+            continue
+
+        with open(fname, 'w') as afd:
             afd.seek(0)
-            afd.write(GEN_STR)
-            for fpart in parts:
-                with open(os.path.join(OPENSHIFT_ANSIBLE_PATH, fpart)) as pfd:
-                    # first line is pylint disable so skip it
-                    for idx, line in enumerate(pfd):
-                        if idx in [0, 1] and 'flake8: noqa' in line \
-                           or 'pylint: skip-file' in line:
-                            continue
-
-                        afd.write(line)
+            afd.write(data.getvalue())
 
 
 if __name__ == '__main__':

+ 1 - 0
roles/lib_utils/src/generate_sources.yml

@@ -1,5 +1,6 @@
 ---
 yedit.py:
+- doc/generated
 - doc/license
 - class/import.py
 - doc/yedit