[pypy-commit] jitviewer argparse-collect: Add argparse support.

vext01 noreply at buildbot.pypy.org
Thu Sep 5 17:09:47 CEST 2013


Author: Edd Barrett <vext01 at gmail.com>
Branch: argparse-collect
Changeset: r232:b85bf2cf7df0
Date: 2013-08-30 17:55 +0100
http://bitbucket.org/pypy/jitviewer/changeset/b85bf2cf7df0/

Log:	Add argparse support.

diff --git a/_jitviewer/app.py b/_jitviewer/app.py
--- a/_jitviewer/app.py
+++ b/_jitviewer/app.py
@@ -19,6 +19,7 @@
 
 import sys
 import os.path
+import argparse
 
 try:
     import pypy
@@ -194,16 +195,15 @@
             orig___init__(self2, *args, **kwds)
         BaseServer.__init__ = __init__
 
-def collect_log(interp, args, logpath="log.pypylog"):
+def collect_log(args, logpath="log.pypylog"):
     """ Collect a log file using pypy """
 
     # XXX Randomise log file name
     # XXX Search path
 
     import subprocess
-    print("prog: %s    args: %s" % (interp, args))
 
-    p = subprocess.Popen([interp] + args, 
+    p = subprocess.Popen(args,
             env={"PYPYLOG" : "jit-log-opt,jit-backend:%s" % (logpath, )}
     )
     p.communicate()
@@ -215,39 +215,28 @@
     if not '__pypy__' in sys.builtin_module_names:
         print "Please run it using pypy-c"
         sys.exit(1)
-    #
-    # XXX use argparse
-    server_mode = True
-    collect_mode = False
-    if '--qt' in argv:
-        server_mode = False
-        argv.remove('--qt')
-    if '--collect' in argv:
-        prog_args = argv[argv.index('--collect')+1:]
-        prog = prog_args[0]
-        args = prog_args[1:]
-        collect_mode = True
-        argv.remove('--collect')
-    #
-    if not collect_mode and len(argv) != 2 and len(argv) != 3:
-        print __doc__
-        sys.exit(1)
 
-    if collect_mode:
-        print("YO COLLECT MODE")
-        print(72 * ":")
-        filename = collect_log(prog, args)
-        port = 5000 # XXX ugh
+    parser = argparse.ArgumentParser()
+
+    parser.add_argument("-l", "--log", help="Specify logfile")
+    parser.add_argument("-c", "--collect", nargs="*", help="Collect logfile now")
+    parser.add_argument("-p", "--port", help="Select HTTP port")
+    parser.add_argument("-q", "--qt", action="store_true", help="Use QT")
+
+    args = parser.parse_args()
+
+    if args.port is not None:
+        port = int(args.port)
     else:
-        print("FUDGE")
-        print(72 * ":")
-        # XXX we really need argparse, as we cant specify port if collecting now
-        filename = argv[1]
+        port = 5000
 
-        if len(argv) != 3:
-            port = 5000
-        else:
-            port = int(argv[2])
+    if args.collect is not None:
+        if len(args.collect) == 0:
+            print("*Error: Please specify invokation to collect log")
+            sys.exit(1)
+        filename = collect_log(args.collect)
+    else:
+        filename = args.log
 
     extra_path = os.path.dirname(filename)
     storage = LoopStorage(extra_path)
@@ -266,7 +255,7 @@
         def run():
             app.run(use_reloader=bool(os.environ.get('JITVIEWER_USE_RELOADER', False)), host='0.0.0.0', port=port)
 
-        if server_mode:
+        if not args.qt:
             run()
         else:
             url = "http://localhost:%d/" % port


More information about the pypy-commit mailing list