summaryrefslogtreecommitdiffstats
path: root/gen-headers.py
blob: 6e40580f696e3b02c38c9fff96e82bbbdd757b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/python

import sys
try:
    import json
except ImportError:
    import simplejson as json
from string import Template


def getLogBook(logFile='error-codes.json'):
    fp = open(logFile)
    return json.load(fp)


def genCHeader(logBook,
               infile='gf-error-codes.h.template',
               outfile='gf-error-codes.h'):
    fp = open('gf-error-codes.h.template')
    s = fp.read()
    fp.close()
    template = Template(s)

    defineLines = []
    caseLines = []
    for name, value in logBook.iteritems():
        nameDef = "GF_%s" % (name.upper(),)
        code = value['code']
        msgNameDef = "%s_MSG" % (nameDef,)
        msg = value['message']['en']

        defineLines.append("#define %-20s %d" % (nameDef, code))
        defineLines.append("#define %-20s %s" % (msgNameDef,
                                                 json.dumps(msg)))
        caseLines.append("#ifdef HAVE_LIBINTL_H")
        caseLines.append("        case %s: return _(%s);" % \
                             (nameDef, msgNameDef))
        caseLines.append("#else")
        caseLines.append("        case %s: return %s;" % \
                             (nameDef, msgNameDef))
        caseLines.append("#endif")

    d = {'DEFINES': "\n".join(defineLines),
         'CASES': "\n".join(caseLines)}
    #print template.substitute(d)

    fp = open(outfile, 'w')
    fp.write(template.substitute(d))
    fp.close()


if __name__ == "__main__":
    try:
        logBook = getLogBook()
        genCHeader(logBook)
        sys.exit(0)
    except IOError, e:
        print str(e)
        sys.exit(-1)