mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
intel/genxml: Add genxml_import.py script
This script can: * validate that genxml files do not duplicate imported items * add imports to genxml files and optimize the file by dropping duplicate items * reverse the import operation by flattening genxml files Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20593>
This commit is contained in:
parent
6ad2f39bab
commit
0495f952d4
1 changed files with 56 additions and 0 deletions
56
src/intel/genxml/genxml_import.py
Executable file
56
src/intel/genxml/genxml_import.py
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python3
|
||||
# Copyright © 2019, 2022 Intel Corporation
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from __future__ import annotations
|
||||
import argparse
|
||||
import copy
|
||||
import intel_genxml
|
||||
import pathlib
|
||||
import typing
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('files', nargs='*',
|
||||
default=pathlib.Path(__file__).parent.glob('*.xml'),
|
||||
type=pathlib.Path)
|
||||
|
||||
g = parser.add_mutually_exclusive_group(required=True)
|
||||
g.add_argument('--import', dest='_import', action='store_true',
|
||||
help='Import and optimize genxml')
|
||||
g.add_argument('--flatten', action='store_true',
|
||||
help='Remove imports from genxml')
|
||||
g.add_argument('--validate', action='store_true',
|
||||
help='Validate genxml has no items duplicating imports')
|
||||
|
||||
parser.add_argument('--quiet', action='store_true')
|
||||
args: Args = parser.parse_args()
|
||||
|
||||
filenames = list(args.files)
|
||||
intel_genxml.sort_genxml_files(filenames)
|
||||
for filename in filenames:
|
||||
if not args.quiet:
|
||||
print('Processing {}... '.format(filename), end='', flush=True)
|
||||
|
||||
genxml = intel_genxml.GenXml(filename)
|
||||
|
||||
if args.validate:
|
||||
original = copy.deepcopy(genxml)
|
||||
genxml.optimize_xml_import()
|
||||
assert genxml.is_equivalent_xml(original), \
|
||||
f'{filename} is invalid, run genxml_import.py to fix it'
|
||||
elif args._import:
|
||||
genxml.add_xml_imports()
|
||||
genxml.optimize_xml_import()
|
||||
genxml.write_file()
|
||||
elif args.flatten:
|
||||
genxml.flatten_imported()
|
||||
genxml.write_file()
|
||||
|
||||
if not args.quiet:
|
||||
print('done.')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
Add table
Reference in a new issue