Python installer for thrift idl compiler
    


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664760 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/src/thrift.py b/compiler/src/thrift.py
index 9282620..39bdb16 100644
--- a/compiler/src/thrift.py
+++ b/compiler/src/thrift.py
@@ -1,18 +1,41 @@
+#!python
 import sys
-import generator
-import cpp_generator
-import parser
+from thrift import cpp_generator
+from thrift import generator
+from thrift import parser
 
-if __name__ == '__main__':
-
-    args = sys.argv[1:]
+def thrift(source, cpp=False, perl=False, php=False, python=False, java=False, ruby=False, debug=False):
 
     generators = []
 
+    if cpp:
+	generators.append(cpp_generator.CPPGenerator())
+    
+    p = parser.Parser(debug=debug)
+
+    p.parse(source, False)
+
+    for generator in generators:
+	generator(p.program, source)
+
+    if len(p.errors):
+	return -1
+    else:
+	return 0
+
+def main(args):
+
+    cpp = False
+    perl = False
+    php = False
+    python = False
+    java = False
+    ruby = False
+
     debug = False
 
     if "--cpp" in args:
-	generators.append(cpp_generator.CPPGenerator())
+	cpp = True
 	args.remove("--cpp")
     if "--debug" in args:
 	debug = True
@@ -20,12 +43,10 @@
 
     filename = args[-1]
 
-    p = parser.Parser(debug=debug)
+    result = thrift(filename, cpp, java, perl, php, python, ruby, debug)
 
-    p.parse(filename, False)
+    sys.exit(result)
 
-    if len(p.errors):
-	sys.exit(-1)
-
-    [g(p.program, filename) for g in generators]
+if __name__ == '__main__':
+    main(sys.argv)