diff options
author | Ratan Gupta <ratagupt@in.ibm.com> | 2016-12-22 19:00:41 +0530 |
---|---|---|
committer | Ratan Gupta <ratagupt@in.ibm.com> | 2017-02-01 12:48:09 +0530 |
commit | 0f2e7fe1bf008b96e5ea7da4dcf8d978c854eeb6 (patch) | |
tree | d4b8c6882ed69905c2f7f300b6dd3b6800cb8b09 /scripts/fru_gen.py | |
parent | a2ca100a21ae6e712e01a11f86476eb2717b25ad (diff) | |
download | ipmi-fru-parser-0f2e7fe1bf008b96e5ea7da4dcf8d978c854eeb6.tar.gz ipmi-fru-parser-0f2e7fe1bf008b96e5ea7da4dcf8d978c854eeb6.zip |
Add IPMI FRU parser code generator.
Add a script that generates c++ structures
based on system dependent configuration.
Change-Id: I3a005b2dd31d7db3137bed9be6df2a0658c48d82
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
Diffstat (limited to 'scripts/fru_gen.py')
-rwxr-xr-x | scripts/fru_gen.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/fru_gen.py b/scripts/fru_gen.py new file mode 100755 index 0000000..391bb5f --- /dev/null +++ b/scripts/fru_gen.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python + +import os +import sys +import yaml +import argparse +from mako.template import Template + + +def generate_hpp(inventory_yaml, output_dir): + with open(os.path.join(script_dir, inventory_yaml), 'r') as f: + ifile = yaml.safe_load(f) + + # Render the mako template + + t = Template(filename=os.path.join( + script_dir, + "writefru.mako.hpp")) + + output_hpp = os.path.join(output_dir, "fru-gen.hpp") + with open(output_hpp, 'w') as fd: + fd.write(t.render(fruDict=ifile)) + + +def main(): + + valid_commands = { + 'generate-hpp': generate_hpp + } + parser = argparse.ArgumentParser( + description="IPMI FRU parser and code generator") + + parser.add_argument( + '-i', '--inventory_yaml', dest='inventory_yaml', + default='example.yaml', help='input inventory 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(os.path.join(script_dir, args.inventory_yaml)))): + sys.exit("Can not find input yaml file " + args.inventory_yaml) + + function = valid_commands[args.command] + function(args.inventory_yaml, args.outputdir) + +if __name__ == '__main__': + script_dir = os.path.dirname(os.path.realpath(__file__)) + main() |