in azure-cli-diff-tool/azure_cli_diff_tool/meta_change_detect.py [0:0]
def export_meta_changes(self, only_break, output_type="text"):
ret_objs = []
ret_mod = {
"module_name": self.module_name,
"name": "az",
"commands": {},
"sub_groups": {}
}
for obj in self.diff_objs:
if only_break and not obj.is_break:
continue
if obj.is_ignore:
continue
ret = {}
for prop in self.EXPORTED_META_PROPERTY:
if hasattr(obj, prop):
ret[prop] = getattr(obj, prop)
ret["rule_name"] = obj.__class__.__name__
if output_type == "dict":
ret_objs.append(ret)
elif output_type == "text":
ret_objs.append(str(obj))
if output_type != "tree":
continue
if not hasattr(obj, "cmd_name") and not hasattr(obj, "subgroup_name"):
logger.info("unsupported rule ignored")
elif not hasattr(obj, "cmd_name") and hasattr(obj, "subgroup_name"):
self.fill_subgroup_rules(obj, ret_mod, ret)
elif not hasattr(obj, "subgroup_name") and hasattr(obj, "cmd_name"):
self.fill_cmd_rules(obj, ret_mod, ret)
else:
logger.info("unsupported rule ignored")
return ret_objs if output_type in ["text", "dict"] else ret_mod