blob: 6f59021b664c8a255c2a0fb93bc8dd2b359ef81a [file] [log] [blame]
Ratan Gupta00659052017-02-23 17:29:08 +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):
Vernon Mauery5f7ac712019-04-30 11:19:08 -070011 with open(sensor_yaml, 'r') as f:
Ratan Gupta00659052017-02-23 17:29:08 +053012 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 "writesensor.mako.cpp"))
21
22 output_cpp = os.path.join(output_dir, "sensor-gen.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="IPMI Sensor parser and 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
Vernon Mauery5f7ac712019-04-30 11:19:08 -070051 if (not (os.path.isfile(args.sensor_yaml))):
Ratan Gupta00659052017-02-23 17:29:08 +053052 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()