from wa.framework.configuration.core import MetaConfiguration, RunConfiguration from wa.framework.configuration.plugin_cache import PluginCache from wa.utils.serializer import yaml from wa.utils.doc import strip_inlined_text DEFAULT_INSTRUMENTS = ['execution_time', 'interrupts', 'cpufreq', 'status', 'standard', 'csv'] def _format_yaml_comment(param, short_description=False): comment = param.description comment = strip_inlined_text(comment) if short_description: comment = comment.split('\n\n')[0] comment = comment.replace('\n', '\n# ') comment = "# {}\n".format(comment) return comment def _format_instruments(output): plugin_cache = PluginCache() output.write("instrumentation:\n") for plugin in DEFAULT_INSTRUMENTS: plugin_cls = plugin_cache.loader.get_plugin_class(plugin) output.writelines(_format_yaml_comment(plugin_cls, short_description=True)) output.write(" - {}\n".format(plugin)) output.write("\n") def generate_default_config(path): with open(path, 'w') as output: for param in MetaConfiguration.config_points + RunConfiguration.config_points: entry = {param.name: param.default} comment = _format_yaml_comment(param) output.writelines(comment) yaml.dump(entry, output, default_flow_style=False) output.write("\n") _format_instruments(output)