summaryrefslogtreecommitdiff
path: root/scripts/override-default
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-12-24 09:40:26 +0100
committerGitHub <noreply@github.com>2023-12-24 09:40:26 +0100
commit1856fd3f4f9e1af3e40b0c3af4f12dd1003f6447 (patch)
tree8978fe4d4105d378967e9ba3d8207848759e1ae9 /scripts/override-default
parent4393a2fb056574f5079270554d30751d11bf5a9a (diff)
parentc4f9c936c9fdd32e7f6258c0dfa8c8cf6057998d (diff)
downloadvyos-1x-1856fd3f4f9e1af3e40b0c3af4f12dd1003f6447.tar.gz
vyos-1x-1856fd3f4f9e1af3e40b0c3af4f12dd1003f6447.zip
Merge pull request #2679 from jestabro/allow-embedded-override
xml: T5854: clear empty paths left by embedded override of defaultValue
Diffstat (limited to 'scripts/override-default')
-rwxr-xr-xscripts/override-default18
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)