From 1fede5e3f3358cd0275e90d9aa26e082347d2aac Mon Sep 17 00:00:00 2001
From: Marc Bonnici <marc.bonnici@arm.com>
Date: Tue, 13 Mar 2018 10:30:02 +0000
Subject: [PATCH] doc/build_plugin_docs: Add support for core config generation

---
 doc/build_extension_docs.py | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/doc/build_extension_docs.py b/doc/build_extension_docs.py
index 3abd0c5d..7aaab458 100755
--- a/doc/build_extension_docs.py
+++ b/doc/build_extension_docs.py
@@ -18,28 +18,47 @@
 import os
 import sys
 
-from wlauto import pluginloader
-from wlauto.utils.doc import get_rst_from_plugin, underline
-from wlauto.utils.misc import capitalize
+from wa import pluginloader
+from wa.framework.configuration.core import RunConfiguration, MetaConfiguration
+from wa.utils.doc import get_rst_from_plugin, underline, get_params_rst
+from wa.utils.misc import capitalize
 
 
-GENERATE_FOR = ['workload', 'instrument', 'result_processor', 'device']
-
+GENERATE_FOR_PLUGIN = ['workload', 'instrument', 'output_processor', 'target']
 
 def generate_plugin_documentation(source_dir, outdir, ignore_paths):
     pluginloader.clear()
     pluginloader.update(paths=[source_dir], ignore_paths=ignore_paths)
     for ext_type in pluginloader.kinds:
-        if not ext_type in GENERATE_FOR:
+        if not ext_type in GENERATE_FOR_PLUGIN:
             continue
         outfile = os.path.join(outdir, '{}s.rst'.format(ext_type))
         with open(outfile, 'w') as wfh:
             wfh.write('.. _{}s:\n\n'.format(ext_type))
-            wfh.write(underline(capitalize('{}s'.format(ext_type))))
+            title = ' '.join([capitalize(w) for w in ext_type.split('_')])
+            wfh.write(underline('{}s'.format(title)))
             exts = pluginloader.list_plugins(ext_type)
             for ext in sorted(exts, key=lambda x: x.name):
                 wfh.write(get_rst_from_plugin(ext))
 
 
+def generate_run_config_documentation(outdir):
+    generate_config_documentation(RunConfiguration, outdir)
+
+
+def generate_meta_config_documentation(outdir):
+    generate_config_documentation(MetaConfiguration, outdir)
+
+
+def generate_config_documentation(config, outdir):
+    if not os.path.exists(outdir):
+        os.mkdir(outdir)
+
+    outfile = os.path.join(outdir, '{}.rst'.format('_'.join(config.name.split())))
+    with open(outfile, 'w') as wfh:
+        wfh.write(get_params_rst(config.config_points))
+
+
+
 if __name__ == '__main__':
     generate_plugin_documentation(sys.argv[2], sys.argv[1], sys.argv[3:])