blob: 6c252d9aeed4abb7ba271c9d6acf53e549a73074 [file] [log] [blame]
Marc Slemko53027fc2006-08-17 01:12:11 +00001#!python
Marc Slemkodb14e172006-08-09 23:36:18 +00002import sys
Marc Slemko53027fc2006-08-17 01:12:11 +00003from thrift import generator
Marc Slemkob09f5882006-08-23 22:03:34 +00004from thrift import cpp_generator
5from thrift import php_generator
Marc Slemko53027fc2006-08-17 01:12:11 +00006from thrift import parser
Marc Slemkodb14e172006-08-09 23:36:18 +00007
Marc Slemkob09f5882006-08-23 22:03:34 +00008def thrift(source, cpp=False, java=False, perl=False, php=False, python=False, ruby=False, debug=False):
Marc Slemkodb14e172006-08-09 23:36:18 +00009
10 generators = []
11
Marc Slemko53027fc2006-08-17 01:12:11 +000012 if cpp:
13 generators.append(cpp_generator.CPPGenerator())
14
Marc Slemkob09f5882006-08-23 22:03:34 +000015 if php:
16 generators.append(php_generator.PHPGenerator())
17
Marc Slemko53027fc2006-08-17 01:12:11 +000018 p = parser.Parser(debug=debug)
19
20 p.parse(source, False)
21
22 for generator in generators:
23 generator(p.program, source)
24
25 if len(p.errors):
26 return -1
27 else:
28 return 0
29
30def main(args):
31
32 cpp = False
33 perl = False
34 php = False
35 python = False
36 java = False
37 ruby = False
38
Marc Slemkodb14e172006-08-09 23:36:18 +000039 debug = False
40
41 if "--cpp" in args:
Marc Slemko53027fc2006-08-17 01:12:11 +000042 cpp = True
Marc Slemkodb14e172006-08-09 23:36:18 +000043 args.remove("--cpp")
Marc Slemkob09f5882006-08-23 22:03:34 +000044 if "--php" in args:
45 php = True
46 args.remove("--php")
Marc Slemkodb14e172006-08-09 23:36:18 +000047 if "--debug" in args:
48 debug = True
49 args.remove("--debug")
50
51 filename = args[-1]
52
Marc Slemko53027fc2006-08-17 01:12:11 +000053 result = thrift(filename, cpp, java, perl, php, python, ruby, debug)
Marc Slemkodb14e172006-08-09 23:36:18 +000054
Marc Slemko53027fc2006-08-17 01:12:11 +000055 sys.exit(result)
Marc Slemkodb14e172006-08-09 23:36:18 +000056
Marc Slemko53027fc2006-08-17 01:12:11 +000057if __name__ == '__main__':
58 main(sys.argv)
Marc Slemkodb14e172006-08-09 23:36:18 +000059