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