def export_meta_changes()

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