1*43082e70SLei YU#!/usr/bin/env python3
234e257baSBrandon Wyman
334e257baSBrandon Wymanimport os
434e257baSBrandon Wymanimport yaml
534e257baSBrandon Wymanfrom argparse import ArgumentParser
634e257baSBrandon Wymanfrom mako.template import Template
734e257baSBrandon Wymanfrom mako.lookup import TemplateLookup
834e257baSBrandon Wyman
934e257baSBrandon Wymanif __name__ == '__main__':
1034e257baSBrandon Wyman    parser = ArgumentParser(
1134e257baSBrandon Wyman        description="Power sequencer UCD90160 definition parser")
1234e257baSBrandon Wyman
1334e257baSBrandon Wyman    parser.add_argument('-i', '--input_yaml', dest='input_yaml',
1434e257baSBrandon Wyman                        default="example/ucd90160.yaml",
1534e257baSBrandon Wyman                        help='UCD90160 definitions YAML')
1634e257baSBrandon Wyman
1734e257baSBrandon Wyman    parser.add_argument('-o', '--output_dir', dest='output_dir',
1834e257baSBrandon Wyman                        default=".",
1934e257baSBrandon Wyman                        help='output directory')
2034e257baSBrandon Wyman
2134e257baSBrandon Wyman    args = parser.parse_args()
2234e257baSBrandon Wyman
2334e257baSBrandon Wyman    if not args.input_yaml or not args.output_dir:
2434e257baSBrandon Wyman        parser.print_usage()
2534e257baSBrandon Wyman        sys.exit(1)
2634e257baSBrandon Wyman
2734e257baSBrandon Wyman    with open(args.input_yaml, 'r') as ucd90160_input:
2834e257baSBrandon Wyman        ucd90160_data = yaml.safe_load(ucd90160_input) or {}
2934e257baSBrandon Wyman
3034e257baSBrandon Wyman    templates_dir = os.path.join(
3134e257baSBrandon Wyman            os.path.dirname(os.path.realpath(__file__)),
3234e257baSBrandon Wyman            "templates")
3334e257baSBrandon Wyman
3434e257baSBrandon Wyman    output_file = os.path.join(args.output_dir, "ucd90160_defs.cpp")
3534e257baSBrandon Wyman
3634e257baSBrandon Wyman    mylookup = TemplateLookup(
3734e257baSBrandon Wyman            directories=templates_dir.split())
3834e257baSBrandon Wyman    mytemplate = mylookup.get_template('ucd90160_defs.mako.cpp')
3934e257baSBrandon Wyman
4034e257baSBrandon Wyman    with open(output_file, 'w') as output:
4134e257baSBrandon Wyman        output.write(mytemplate.render(ucd90160s=ucd90160_data))
42