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