1#!/usr/bin/env python3 2 3import os 4import yaml 5from mako.template import Template 6import argparse 7 8 9def main(): 10 parser = argparse.ArgumentParser(description="Callout code generator") 11 12 parser.add_argument( 13 "-i", 14 "--callouts_yaml", 15 dest="callouts_yaml", 16 default=os.path.join(script_dir, "callouts-example.yaml"), 17 help="input callouts yaml", 18 ) 19 parser.add_argument( 20 "-o", 21 "--output", 22 dest="output", 23 default="callouts-gen.hpp", 24 help="output file name (default: callouts-gen.hpp)", 25 ) 26 27 args = parser.parse_args() 28 29 with open(args.callouts_yaml, "r") as fd: 30 calloutsMap = yaml.safe_load(fd) 31 32 # Render the mako template 33 template = os.path.join(script_dir, "callouts-gen.mako.hpp") 34 t = Template(filename=template) 35 with open(args.output, "w") as fd: 36 fd.write(t.render(calloutsMap=calloutsMap)) 37 38 39if __name__ == "__main__": 40 script_dir = os.path.dirname(os.path.realpath(__file__)) 41 main() 42