| #!/usr/bin/env python3 | 
 |  | 
 | import argparse | 
 | import os | 
 | import sys | 
 |  | 
 | import yaml | 
 | from mako.template import Template | 
 |  | 
 |  | 
 | def generate_cpp(sensor_yaml, output_dir): | 
 |     with open(sensor_yaml, "r") as f: | 
 |         ifile = yaml.safe_load(f) | 
 |         if not isinstance(ifile, dict): | 
 |             ifile = {} | 
 |  | 
 |         # Render the mako template | 
 |  | 
 |         t = Template( | 
 |             filename=os.path.join(script_dir, "inventorysensor.cpp.mako") | 
 |         ) | 
 |  | 
 |         output_cpp = os.path.join(output_dir, "inventory-sensor-gen.cpp") | 
 |         with open(output_cpp, "w") as fd: | 
 |             fd.write(t.render(sensorDict=ifile)) | 
 |  | 
 |  | 
 | def main(): | 
 |     valid_commands = {"generate-cpp": generate_cpp} | 
 |     parser = argparse.ArgumentParser( | 
 |         description="Inventory Object to IPMI SensorID code generator" | 
 |     ) | 
 |  | 
 |     parser.add_argument( | 
 |         "-i", | 
 |         "--sensor_yaml", | 
 |         dest="sensor_yaml", | 
 |         default="example.yaml", | 
 |         help="input sensor yaml file to parse", | 
 |     ) | 
 |  | 
 |     parser.add_argument( | 
 |         "-o", | 
 |         "--output-dir", | 
 |         dest="outputdir", | 
 |         default=".", | 
 |         help="output directory", | 
 |     ) | 
 |  | 
 |     parser.add_argument( | 
 |         "command", | 
 |         metavar="COMMAND", | 
 |         type=str, | 
 |         choices=valid_commands.keys(), | 
 |         help="Command to run.", | 
 |     ) | 
 |  | 
 |     args = parser.parse_args() | 
 |  | 
 |     if not (os.path.isfile(args.sensor_yaml)): | 
 |         sys.exit("Can not find input yaml file " + args.sensor_yaml) | 
 |  | 
 |     function = valid_commands[args.command] | 
 |     function(args.sensor_yaml, args.outputdir) | 
 |  | 
 |  | 
 | if __name__ == "__main__": | 
 |     script_dir = os.path.dirname(os.path.realpath(__file__)) | 
 |     main() |