diff --git a/src/tree.py b/src/tree.py index bb8e8794b1a8cece927728184139f6492ea50901..8317ababe3f8ccde080d4bd22d0ae3dee568cc40 100644 --- a/src/tree.py +++ b/src/tree.py @@ -243,19 +243,25 @@ class TreeWalker: config = load_json(config_path) flag, result = self.ensure_node_id(config) if flag: - dump_json(config_path, config, exist_ok=True, override=True) + dump_json(config_path, result, exist_ok=True, override=True) return config def ensure_node_id(self, config): + flag = False if "node_id" not in config or \ not config["node_id"].startswith(f"{self.tree}-") or \ config["node_id"] in id_set: new_id = self.gen_node_id() id_set.add(new_id) config["node_id"] = new_id - return True, config - else: - return False, config + flag = True + + for child in config.get("children", []): + child_node = list(child.values())[0] + f, _ = self.ensure_node_id(child_node) + flag = flag or f + + return flag, config def gen_node_id(self): return f"{self.name}-{uuid.uuid4().hex}"