1*34e257baSBrandon Wyman#!/usr/bin/env python
2*34e257baSBrandon Wyman
3*34e257baSBrandon Wymanimport os
4*34e257baSBrandon Wymanimport yaml
5*34e257baSBrandon Wymanfrom argparse import ArgumentParser
6*34e257baSBrandon Wymanfrom mako.template import Template
7*34e257baSBrandon Wymanfrom mako.lookup import TemplateLookup
8*34e257baSBrandon Wyman
9*34e257baSBrandon Wymanif __name__ == '__main__':
10*34e257baSBrandon Wyman    parser = ArgumentParser(
11*34e257baSBrandon Wyman        description="Power sequencer UCD90160 definition parser")
12*34e257baSBrandon Wyman
13*34e257baSBrandon Wyman    parser.add_argument('-i', '--input_yaml', dest='input_yaml',
14*34e257baSBrandon Wyman                        default="example/ucd90160.yaml",
15*34e257baSBrandon Wyman                        help='UCD90160 definitions YAML')
16*34e257baSBrandon Wyman
17*34e257baSBrandon Wyman    parser.add_argument('-o', '--output_dir', dest='output_dir',
18*34e257baSBrandon Wyman                        default=".",
19*34e257baSBrandon Wyman                        help='output directory')
20*34e257baSBrandon Wyman
21*34e257baSBrandon Wyman    args = parser.parse_args()
22*34e257baSBrandon Wyman
23*34e257baSBrandon Wyman    if not args.input_yaml or not args.output_dir:
24*34e257baSBrandon Wyman        parser.print_usage()
25*34e257baSBrandon Wyman        sys.exit(1)
26*34e257baSBrandon Wyman
27*34e257baSBrandon Wyman    with open(args.input_yaml, 'r') as ucd90160_input:
28*34e257baSBrandon Wyman        ucd90160_data = yaml.safe_load(ucd90160_input) or {}
29*34e257baSBrandon Wyman
30*34e257baSBrandon Wyman    templates_dir = os.path.join(
31*34e257baSBrandon Wyman            os.path.dirname(os.path.realpath(__file__)),
32*34e257baSBrandon Wyman            "templates")
33*34e257baSBrandon Wyman
34*34e257baSBrandon Wyman    output_file = os.path.join(args.output_dir, "ucd90160_defs.cpp")
35*34e257baSBrandon Wyman
36*34e257baSBrandon Wyman    mylookup = TemplateLookup(
37*34e257baSBrandon Wyman            directories=templates_dir.split())
38*34e257baSBrandon Wyman    mytemplate = mylookup.get_template('ucd90160_defs.mako.cpp')
39*34e257baSBrandon Wyman
40*34e257baSBrandon Wyman    with open(output_file, 'w') as output:
41*34e257baSBrandon Wyman        output.write(mytemplate.render(ucd90160s=ucd90160_data))
42