xref: /aosp_15_r20/external/mesa3d/src/intel/genxml/genxml_import.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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