143082e70SLei YU#!/usr/bin/env python3 234e257baSBrandon Wyman 334e257baSBrandon Wymanimport os 4*a93243d1SPatrick Williamsimport sys 534e257baSBrandon Wymanfrom argparse import ArgumentParser 6*a93243d1SPatrick Williams 7*a93243d1SPatrick Williamsimport yaml 834e257baSBrandon Wymanfrom mako.lookup import TemplateLookup 934e257baSBrandon Wyman 10*a93243d1SPatrick Williamsif __name__ == "__main__": 1134e257baSBrandon Wyman parser = ArgumentParser( 12*a93243d1SPatrick Williams description="Power sequencer UCD90160 definition parser" 13*a93243d1SPatrick Williams ) 1434e257baSBrandon Wyman 15*a93243d1SPatrick Williams parser.add_argument( 16*a93243d1SPatrick Williams "-i", 17*a93243d1SPatrick Williams "--input_yaml", 18*a93243d1SPatrick Williams dest="input_yaml", 1934e257baSBrandon Wyman default="example/ucd90160.yaml", 20*a93243d1SPatrick Williams help="UCD90160 definitions YAML", 21*a93243d1SPatrick Williams ) 2234e257baSBrandon Wyman 23*a93243d1SPatrick Williams parser.add_argument( 24*a93243d1SPatrick Williams "-o", 25*a93243d1SPatrick Williams "--output_dir", 26*a93243d1SPatrick Williams dest="output_dir", 2734e257baSBrandon Wyman default=".", 28*a93243d1SPatrick Williams help="output directory", 29*a93243d1SPatrick 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*a93243d1SPatrick 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*a93243d1SPatrick Williams os.path.dirname(os.path.realpath(__file__)), "templates" 42*a93243d1SPatrick Williams ) 4334e257baSBrandon Wyman 4434e257baSBrandon Wyman output_file = os.path.join(args.output_dir, "ucd90160_defs.cpp") 4534e257baSBrandon Wyman 46*a93243d1SPatrick Williams mylookup = TemplateLookup(directories=templates_dir.split()) 47*a93243d1SPatrick Williams mytemplate = mylookup.get_template("ucd90160_defs.mako.cpp") 4834e257baSBrandon Wyman 49*a93243d1SPatrick Williams with open(output_file, "w") as output: 5034e257baSBrandon Wyman output.write(mytemplate.render(ucd90160s=ucd90160_data)) 51