1c1f5ed6fSDhruvaraj Subhashchandran#!/usr/bin/env python3 2c1f5ed6fSDhruvaraj Subhashchandran 3c1f5ed6fSDhruvaraj Subhashchandranimport argparse 4c1f5ed6fSDhruvaraj Subhashchandranimport os 5c1f5ed6fSDhruvaraj Subhashchandran 6c1f5ed6fSDhruvaraj Subhashchandranimport yaml 7c1f5ed6fSDhruvaraj Subhashchandranfrom mako.template import Template 8c1f5ed6fSDhruvaraj Subhashchandran 9c1f5ed6fSDhruvaraj Subhashchandran 10c1f5ed6fSDhruvaraj Subhashchandrandef main(): 11c1f5ed6fSDhruvaraj Subhashchandran parser = argparse.ArgumentParser( 12c1f5ed6fSDhruvaraj Subhashchandran description="OpenPOWER map code generator" 13c1f5ed6fSDhruvaraj Subhashchandran ) 14c1f5ed6fSDhruvaraj Subhashchandran 15c1f5ed6fSDhruvaraj Subhashchandran parser.add_argument( 16c1f5ed6fSDhruvaraj Subhashchandran "-i", 17*aa0937f9SDhruvaraj Subhashchandran "--input_dump_type_yaml", 18*aa0937f9SDhruvaraj Subhashchandran dest="input_dump_type_yaml", 19*aa0937f9SDhruvaraj Subhashchandran default="example_dump_types.yaml", 20*aa0937f9SDhruvaraj Subhashchandran help="input dump type yaml file to parse", 21*aa0937f9SDhruvaraj Subhashchandran ) 22*aa0937f9SDhruvaraj Subhashchandran 23*aa0937f9SDhruvaraj Subhashchandran parser.add_argument( 24*aa0937f9SDhruvaraj Subhashchandran "-j", 25*aa0937f9SDhruvaraj Subhashchandran "--input_error_type_yaml", 26*aa0937f9SDhruvaraj Subhashchandran dest="input_error_type_yaml", 27*aa0937f9SDhruvaraj Subhashchandran default="example_errors_watch.yaml", 28*aa0937f9SDhruvaraj Subhashchandran help="input error type yaml file to parse", 29c1f5ed6fSDhruvaraj Subhashchandran ) 30c1f5ed6fSDhruvaraj Subhashchandran 31c1f5ed6fSDhruvaraj Subhashchandran parser.add_argument( 32c1f5ed6fSDhruvaraj Subhashchandran "-t", 33c1f5ed6fSDhruvaraj Subhashchandran "--template", 34c1f5ed6fSDhruvaraj Subhashchandran dest="template", 35c1f5ed6fSDhruvaraj Subhashchandran default="template.mako.cpp", 36c1f5ed6fSDhruvaraj Subhashchandran help="mako template file to use", 37c1f5ed6fSDhruvaraj Subhashchandran ) 38c1f5ed6fSDhruvaraj Subhashchandran 39c1f5ed6fSDhruvaraj Subhashchandran parser.add_argument( 40c1f5ed6fSDhruvaraj Subhashchandran "-o", 41c1f5ed6fSDhruvaraj Subhashchandran "--output_file", 42c1f5ed6fSDhruvaraj Subhashchandran dest="output_file", 43c1f5ed6fSDhruvaraj Subhashchandran default="output.cpp", 44c1f5ed6fSDhruvaraj Subhashchandran help="output cpp file", 45c1f5ed6fSDhruvaraj Subhashchandran ) 46c1f5ed6fSDhruvaraj Subhashchandran 47c1f5ed6fSDhruvaraj Subhashchandran args = parser.parse_args() 48c1f5ed6fSDhruvaraj Subhashchandran 49*aa0937f9SDhruvaraj Subhashchandran with open(os.path.join(script_dir, args.input_dump_type_yaml), "r") as fd: 50*aa0937f9SDhruvaraj Subhashchandran yaml_dict1 = yaml.safe_load(fd) 51*aa0937f9SDhruvaraj Subhashchandran 52*aa0937f9SDhruvaraj Subhashchandran with open(os.path.join(script_dir, args.input_error_type_yaml), "r") as fd: 53*aa0937f9SDhruvaraj Subhashchandran yaml_dict2 = yaml.safe_load(fd) 54c1f5ed6fSDhruvaraj Subhashchandran 55c1f5ed6fSDhruvaraj Subhashchandran template = os.path.join(script_dir, args.template) 56c1f5ed6fSDhruvaraj Subhashchandran t = Template(filename=template) 57c1f5ed6fSDhruvaraj Subhashchandran with open(args.output_file, "w") as fd: 58*aa0937f9SDhruvaraj Subhashchandran fd.write( 59*aa0937f9SDhruvaraj Subhashchandran t.render(DUMP_TYPE_TABLE=yaml_dict1, ERROR_TYPE_DICT=yaml_dict2) 60*aa0937f9SDhruvaraj Subhashchandran ) 61c1f5ed6fSDhruvaraj Subhashchandran 62c1f5ed6fSDhruvaraj Subhashchandran 63c1f5ed6fSDhruvaraj Subhashchandranif __name__ == "__main__": 64c1f5ed6fSDhruvaraj Subhashchandran script_dir = os.path.dirname(os.path.realpath(__file__)) 65c1f5ed6fSDhruvaraj Subhashchandran main() 66