#!/usr/bin/python2 from __future__ import print_function import os import re import string import sys curdir = os.path.dirname(sys.argv[0]) gendir = os.path.join(curdir, '../../../../libglusterfs/src') sys.path.append(gendir) from generator import ops, fop_subs, cbk_subs, generate # We really want the callback argument list, even when we're generating fop # code, so we propagate here. # TBD: this should probably be right in generate.py for k, v in cbk_subs.items(): fop_subs[k]['@ERROR_ARGS@'] = v['@ERROR_ARGS@'] # Stolen from old codegen.py def load_templates (path): templates = {} tmpl_re = re.compile("/\* template-name (.*) \*/") templates = {} t_name = None for line in open(path, "r").readlines(): if not line: break m = tmpl_re.match(line) if m: if t_name: templates[t_name] = ''.join(t_contents) t_name = m.group(1).strip() t_contents = [] elif t_name: t_contents.append(line) if t_name: templates[t_name] = ''.join(t_contents) return templates # Stolen from gen_fdl.py def gen_client (templates): for name, value in ops.items(): if name == 'getspec': # It's not real if it doesn't have a stub function. continue print(generate(templates['cbk'], name, cbk_subs)) print(generate(templates['cont-func'], name, fop_subs)) print(generate(templates['fop'], name, fop_subs)) tmpl = load_templates(sys.argv[1]) for l in open(sys.argv[2], 'r').readlines(): if l.find('#pragma generate') != -1: print("/* BEGIN GENERATED CODE - DO NOT MODIFY */") gen_client(tmpl) print("/* END GENERATED CODE */") else: print(l[:-1])