mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-16 15:50:19 +01:00
intel/genxml: Move sorting & writing into GenXml class
Rework: * Use "all" in is_equivalent_xml() (Dylan) Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Dylan Baker <dylan@pnwbakers> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24605>
This commit is contained in:
parent
3176abc0f2
commit
e60a0b1616
2 changed files with 25 additions and 10 deletions
|
|
@ -24,18 +24,14 @@ def main() -> None:
|
|||
if not args.quiet:
|
||||
print('Processing {}... '.format(filename), end='', flush=True)
|
||||
|
||||
xml = et.parse(filename)
|
||||
original = copy.deepcopy(xml) if args.validate else xml
|
||||
intel_genxml.sort_xml(xml)
|
||||
genxml = intel_genxml.GenXml(filename)
|
||||
|
||||
if args.validate:
|
||||
for old, new in zip(original.getroot(), xml.getroot()):
|
||||
assert intel_genxml.node_validator(old, new), f'{filename} is invalid, run gen_sort_tags.py and commit that'
|
||||
assert genxml.is_equivalent_xml(genxml.sorted_copy()), \
|
||||
f'{filename} is invalid, run gen_sort_tags.py and commit that'
|
||||
else:
|
||||
tmp = filename.with_suffix(f'{filename.suffix}.tmp')
|
||||
et.indent(xml, space=' ')
|
||||
xml.write(tmp, encoding="utf-8", xml_declaration=True)
|
||||
tmp.replace(filename)
|
||||
genxml.sort()
|
||||
genxml.write_file()
|
||||
|
||||
if not args.quiet:
|
||||
print('done.')
|
||||
|
|
|
|||
|
|
@ -168,7 +168,8 @@ def sort_xml(xml: et.ElementTree) -> None:
|
|||
|
||||
class GenXml(object):
|
||||
def __init__(self, filename):
|
||||
self.et = et.parse(filename)
|
||||
self.filename = pathlib.Path(filename)
|
||||
self.et = et.parse(self.filename)
|
||||
|
||||
def filter_engines(self, engines):
|
||||
changed = False
|
||||
|
|
@ -187,3 +188,21 @@ class GenXml(object):
|
|||
items.append(item)
|
||||
if changed:
|
||||
self.et.getroot()[:] = items
|
||||
|
||||
def sort(self):
|
||||
sort_xml(self.et)
|
||||
|
||||
def sorted_copy(self):
|
||||
clone = copy.deepcopy(self)
|
||||
clone.sort()
|
||||
return clone
|
||||
|
||||
def is_equivalent_xml(self, other):
|
||||
return all(node_validator(old, new)
|
||||
for old, new in zip(self.et.getroot(), other.et.getroot()))
|
||||
|
||||
def write_file(self):
|
||||
tmp = self.filename.with_suffix(f'{self.filename.suffix}.tmp')
|
||||
et.indent(self.et, space=' ')
|
||||
self.et.write(tmp, encoding="utf-8", xml_declaration=True)
|
||||
tmp.replace(self.filename)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue