1#!/usr/bin/env python3 2# Copyright © 2019, 2022 Intel Corporation 3# SPDX-License-Identifier: MIT 4 5from __future__ import annotations 6import argparse 7import copy 8import intel_genxml 9import pathlib 10import typing 11 12 13def main() -> None: 14 parser = argparse.ArgumentParser() 15 parser.add_argument('files', nargs='*', 16 default=pathlib.Path(__file__).parent.glob('*.xml'), 17 type=pathlib.Path) 18 19 g = parser.add_mutually_exclusive_group(required=True) 20 g.add_argument('--import', dest='_import', action='store_true', 21 help='Import and optimize genxml') 22 g.add_argument('--flatten', action='store_true', 23 help='Remove imports from genxml') 24 g.add_argument('--validate', action='store_true', 25 help='Validate genxml has no items duplicating imports') 26 27 parser.add_argument('--quiet', action='store_true') 28 args: Args = parser.parse_args() 29 30 filenames = list(args.files) 31 intel_genxml.sort_genxml_files(filenames) 32 for filename in filenames: 33 if not args.quiet: 34 print('Processing {}... '.format(filename), end='', flush=True) 35 36 genxml = intel_genxml.GenXml(filename) 37 38 if args.validate: 39 original = copy.deepcopy(genxml) 40 genxml.optimize_xml_import() 41 assert genxml.is_equivalent_xml(original), \ 42 f'{filename} is invalid, run genxml_import.py to fix it' 43 elif args._import: 44 genxml.add_xml_imports() 45 genxml.optimize_xml_import() 46 genxml.write_file() 47 elif args.flatten: 48 genxml.flatten_imported() 49 genxml.write_file() 50 51 if not args.quiet: 52 print('done.') 53 54 55if __name__ == '__main__': 56 main() 57