| #!/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() |