blob: 1040cf025068f2c0490dec06fd06f31e83c90ea5 [file] [log] [blame]
Tom Josephb61b1072019-01-28 12:32:52 +05301#!/usr/bin/env python
2
3import os
4import sys
5import yaml
6import argparse
7from mako.template import Template
8
9
10def generate_cpp(sensor_yaml, output_dir):
11 with open(os.path.join(script_dir, sensor_yaml), 'r') as f:
12 ifile = yaml.safe_load(f)
13 if not isinstance(ifile, dict):
14 ifile = {}
15
16 # Render the mako template
17
18 t = Template(filename=os.path.join(
19 script_dir,
20 "inventorysensor.mako.cpp"))
21
22 output_cpp = os.path.join(output_dir, "inventory-sensor.cpp")
23 with open(output_cpp, 'w') as fd:
24 fd.write(t.render(sensorDict=ifile))
25
26
27def main():
28
29 valid_commands = {
30 'generate-cpp': generate_cpp
31 }
32 parser = argparse.ArgumentParser(
33 description="Inventory Object to IPMI SensorID code generator")
34
35 parser.add_argument(
36 '-i', '--sensor_yaml', dest='sensor_yaml',
37 default='example.yaml', help='input sensor yaml file to parse')
38
39 parser.add_argument(
40 "-o", "--output-dir", dest="outputdir",
41 default=".",
42 help="output directory")
43
44 parser.add_argument(
45 'command', metavar='COMMAND', type=str,
46 choices=valid_commands.keys(),
47 help='Command to run.')
48
49 args = parser.parse_args()
50
51 if (not (os.path.isfile(os.path.join(script_dir, args.sensor_yaml)))):
52 sys.exit("Can not find input yaml file " + args.sensor_yaml)
53
54 function = valid_commands[args.command]
55 function(args.sensor_yaml, args.outputdir)
56
57
58if __name__ == '__main__':
59 script_dir = os.path.dirname(os.path.realpath(__file__))
60 main()