diff options
author | John Estabrook <jestabro@vyos.io> | 2023-12-23 16:22:31 -0800 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2023-12-23 18:39:21 -0800 |
commit | c4f9c936c9fdd32e7f6258c0dfa8c8cf6057998d (patch) | |
tree | 8978fe4d4105d378967e9ba3d8207848759e1ae9 /scripts | |
parent | 4393a2fb056574f5079270554d30751d11bf5a9a (diff) | |
download | vyos-1x-c4f9c936c9fdd32e7f6258c0dfa8c8cf6057998d.tar.gz vyos-1x-c4f9c936c9fdd32e7f6258c0dfa8c8cf6057998d.zip |
xml: T5854: clear empty paths left by embedded override of defaultValue
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/override-default | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/scripts/override-default b/scripts/override-default index 0c49087c8..5058e79b3 100755 --- a/scripts/override-default +++ b/scripts/override-default @@ -41,6 +41,14 @@ if debug: else: logger.setLevel(logging.INFO) +def clear_empty_path(el): + # on the odd chance of interleaved comments + tmp = [l for l in el if isinstance(l.tag, str)] + if not tmp: + p = el.getparent() + p.remove(el) + clear_empty_path(p) + def override_element(l: list): """ Allow multiple override elements; use the final one (in document order). @@ -59,7 +67,9 @@ def override_element(l: list): # remove all but overridden element for el in parents: - el.getparent().remove(el) + tmp = el.getparent() + tmp.remove(el) + clear_empty_path(tmp) def merge_remaining(l: list, elementtree): """ @@ -81,7 +91,9 @@ def merge_remaining(l: list, elementtree): # override_element() has already run for child in el: rp[0].append(deepcopy(child)) - el.getparent().remove(el) + tmp = el.getparent() + tmp.remove(el) + clear_empty_path(tmp) def collect_and_override(dir_name): """ @@ -104,7 +116,7 @@ def collect_and_override(dir_name): for k, v in defv.items(): if len(v) > 1: - logger.info(f"overridding default in path '{k}'") + logger.info(f"overriding default in path '{k}'") override_element(v) to_merge = list(defv) |