1f29a6f1aSPatrick Williams#!/usr/bin/env python3
234e257baSBrandon Wyman
334e257baSBrandon Wymanimport os
4*01506ac1SPatrick Williamsimport sys
534e257baSBrandon Wymanfrom argparse import ArgumentParser
6*01506ac1SPatrick Williams
7*01506ac1SPatrick Williamsimport yaml
834e257baSBrandon Wymanfrom mako.lookup import TemplateLookup
934e257baSBrandon Wyman
10*01506ac1SPatrick Williamsif __name__ == "__main__":
1134e257baSBrandon Wyman    parser = ArgumentParser(
12*01506ac1SPatrick Williams        description="Power sequencer UCD90160 definition parser"
13*01506ac1SPatrick Williams    )
1434e257baSBrandon Wyman
15*01506ac1SPatrick Williams    parser.add_argument(
16*01506ac1SPatrick Williams        "-i",
17*01506ac1SPatrick Williams        "--input_yaml",
18*01506ac1SPatrick Williams        dest="input_yaml",
1934e257baSBrandon Wyman        default="example/ucd90160.yaml",
20*01506ac1SPatrick Williams        help="UCD90160 definitions YAML",
21*01506ac1SPatrick Williams    )
2234e257baSBrandon Wyman
23*01506ac1SPatrick Williams    parser.add_argument(
24*01506ac1SPatrick Williams        "-o",
25*01506ac1SPatrick Williams        "--output_dir",
26*01506ac1SPatrick Williams        dest="output_dir",
2734e257baSBrandon Wyman        default=".",
28*01506ac1SPatrick Williams        help="output directory",
29*01506ac1SPatrick Williams    )
3034e257baSBrandon Wyman
3134e257baSBrandon Wyman    args = parser.parse_args()
3234e257baSBrandon Wyman
3334e257baSBrandon Wyman    if not args.input_yaml or not args.output_dir:
3434e257baSBrandon Wyman        parser.print_usage()
3534e257baSBrandon Wyman        sys.exit(1)
3634e257baSBrandon Wyman
37*01506ac1SPatrick Williams    with open(args.input_yaml, "r") as ucd90160_input:
3834e257baSBrandon Wyman        ucd90160_data = yaml.safe_load(ucd90160_input) or {}
3934e257baSBrandon Wyman
4034e257baSBrandon Wyman    templates_dir = os.path.join(
41*01506ac1SPatrick Williams        os.path.dirname(os.path.realpath(__file__)), "templates"
42*01506ac1SPatrick Williams    )
4334e257baSBrandon Wyman
4434e257baSBrandon Wyman    output_file = os.path.join(args.output_dir, "ucd90160_defs.cpp")
4534e257baSBrandon Wyman
46*01506ac1SPatrick Williams    mylookup = TemplateLookup(directories=templates_dir.split())
47*01506ac1SPatrick Williams    mytemplate = mylookup.get_template("ucd90160_defs.mako.cpp")
4834e257baSBrandon Wyman
49*01506ac1SPatrick Williams    with open(output_file, "w") as output:
5034e257baSBrandon Wyman        output.write(mytemplate.render(ucd90160s=ucd90160_data))
51