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