xref: /openbmc/phosphor-debug-collector/map_gen.py (revision aa0937f9ab12732844ea6dbe9e8c94bc4721e762)
1c1f5ed6fSDhruvaraj Subhashchandran#!/usr/bin/env python3
2c1f5ed6fSDhruvaraj Subhashchandran
3c1f5ed6fSDhruvaraj Subhashchandranimport argparse
4c1f5ed6fSDhruvaraj Subhashchandranimport os
5c1f5ed6fSDhruvaraj Subhashchandran
6c1f5ed6fSDhruvaraj Subhashchandranimport yaml
7c1f5ed6fSDhruvaraj Subhashchandranfrom mako.template import Template
8c1f5ed6fSDhruvaraj Subhashchandran
9c1f5ed6fSDhruvaraj Subhashchandran
10c1f5ed6fSDhruvaraj Subhashchandrandef main():
11c1f5ed6fSDhruvaraj Subhashchandran    parser = argparse.ArgumentParser(
12c1f5ed6fSDhruvaraj Subhashchandran        description="OpenPOWER map code generator"
13c1f5ed6fSDhruvaraj Subhashchandran    )
14c1f5ed6fSDhruvaraj Subhashchandran
15c1f5ed6fSDhruvaraj Subhashchandran    parser.add_argument(
16c1f5ed6fSDhruvaraj Subhashchandran        "-i",
17*aa0937f9SDhruvaraj Subhashchandran        "--input_dump_type_yaml",
18*aa0937f9SDhruvaraj Subhashchandran        dest="input_dump_type_yaml",
19*aa0937f9SDhruvaraj Subhashchandran        default="example_dump_types.yaml",
20*aa0937f9SDhruvaraj Subhashchandran        help="input dump type yaml file to parse",
21*aa0937f9SDhruvaraj Subhashchandran    )
22*aa0937f9SDhruvaraj Subhashchandran
23*aa0937f9SDhruvaraj Subhashchandran    parser.add_argument(
24*aa0937f9SDhruvaraj Subhashchandran        "-j",
25*aa0937f9SDhruvaraj Subhashchandran        "--input_error_type_yaml",
26*aa0937f9SDhruvaraj Subhashchandran        dest="input_error_type_yaml",
27*aa0937f9SDhruvaraj Subhashchandran        default="example_errors_watch.yaml",
28*aa0937f9SDhruvaraj Subhashchandran        help="input error type yaml file to parse",
29c1f5ed6fSDhruvaraj Subhashchandran    )
30c1f5ed6fSDhruvaraj Subhashchandran
31c1f5ed6fSDhruvaraj Subhashchandran    parser.add_argument(
32c1f5ed6fSDhruvaraj Subhashchandran        "-t",
33c1f5ed6fSDhruvaraj Subhashchandran        "--template",
34c1f5ed6fSDhruvaraj Subhashchandran        dest="template",
35c1f5ed6fSDhruvaraj Subhashchandran        default="template.mako.cpp",
36c1f5ed6fSDhruvaraj Subhashchandran        help="mako template file to use",
37c1f5ed6fSDhruvaraj Subhashchandran    )
38c1f5ed6fSDhruvaraj Subhashchandran
39c1f5ed6fSDhruvaraj Subhashchandran    parser.add_argument(
40c1f5ed6fSDhruvaraj Subhashchandran        "-o",
41c1f5ed6fSDhruvaraj Subhashchandran        "--output_file",
42c1f5ed6fSDhruvaraj Subhashchandran        dest="output_file",
43c1f5ed6fSDhruvaraj Subhashchandran        default="output.cpp",
44c1f5ed6fSDhruvaraj Subhashchandran        help="output cpp file",
45c1f5ed6fSDhruvaraj Subhashchandran    )
46c1f5ed6fSDhruvaraj Subhashchandran
47c1f5ed6fSDhruvaraj Subhashchandran    args = parser.parse_args()
48c1f5ed6fSDhruvaraj Subhashchandran
49*aa0937f9SDhruvaraj Subhashchandran    with open(os.path.join(script_dir, args.input_dump_type_yaml), "r") as fd:
50*aa0937f9SDhruvaraj Subhashchandran        yaml_dict1 = yaml.safe_load(fd)
51*aa0937f9SDhruvaraj Subhashchandran
52*aa0937f9SDhruvaraj Subhashchandran    with open(os.path.join(script_dir, args.input_error_type_yaml), "r") as fd:
53*aa0937f9SDhruvaraj Subhashchandran        yaml_dict2 = yaml.safe_load(fd)
54c1f5ed6fSDhruvaraj Subhashchandran
55c1f5ed6fSDhruvaraj Subhashchandran    template = os.path.join(script_dir, args.template)
56c1f5ed6fSDhruvaraj Subhashchandran    t = Template(filename=template)
57c1f5ed6fSDhruvaraj Subhashchandran    with open(args.output_file, "w") as fd:
58*aa0937f9SDhruvaraj Subhashchandran        fd.write(
59*aa0937f9SDhruvaraj Subhashchandran            t.render(DUMP_TYPE_TABLE=yaml_dict1, ERROR_TYPE_DICT=yaml_dict2)
60*aa0937f9SDhruvaraj Subhashchandran        )
61c1f5ed6fSDhruvaraj Subhashchandran
62c1f5ed6fSDhruvaraj Subhashchandran
63c1f5ed6fSDhruvaraj Subhashchandranif __name__ == "__main__":
64c1f5ed6fSDhruvaraj Subhashchandran    script_dir = os.path.dirname(os.path.realpath(__file__))
65c1f5ed6fSDhruvaraj Subhashchandran    main()
66