11"""Main entry point"""
22
3- import sys
3+ import sys , os
44import time
55if sys .argv [0 ].endswith ("__main__.py" ):
6- sys .argv [0 ] = "python -m disalgo "
6+ sys .argv [0 ] = "python -m distalgo "
77
8- args = dict ()
8+ RUNTIMEPKG = "runtime"
9+ RUNTIMEFILES = ["event.py" , "udp.py" , "sim.py" , "util.py" ]
910
1011def parseArgs (argv ):
11- if (len (argv ) < 2 ):
12- printUsage (argv [0 ])
13- sys .exit (1 )
14-
15- global args
16- args ['printsource' ] = False
17- args ['optimize' ] = False
18- args ['sourcefile' ] = None
19- args ['run' ] = False
20- args ['full' ] = False
21- for arg in argv :
22- if (arg == "-p" ):
23- args ['printsource' ] = True
24- elif (arg == "-o" ):
25- args ['optimize' ] = True
26- elif (arg == "-r" ):
27- args ['run' ] = True
28- elif (arg == "-F" or arg == "--full" ):
29- args ['full' ] = True
30- else :
31- args ['sourcefile' ] = arg
12+
13+ import optparse
14+ p = optparse .OptionParser ()
15+
16+ p .add_option ("-p" , action = "store_true" , dest = 'printsource' )
17+ p .add_option ("-F" , action = "store_true" , dest = 'genfull' )
18+ p .add_option ("--full" , action = "store_true" , dest = 'genfull' )
19+ p .add_option ("-O" , action = "store_true" , dest = 'optimize' )
20+ p .add_option ("-D" , action = "store" , dest = 'rootdir' )
21+
22+ p .set_defaults (printsource = False ,
23+ genfull = False ,
24+ optimize = False ,
25+ rootdir = os .getcwd ())
26+
27+ return p .parse_args ()
28+
3229
3330def printUsage (name ):
3431 usage = """
@@ -37,30 +34,51 @@ def printUsage(name):
3734"""
3835 sys .stderr .write (usage % name )
3936
40- import ast
41-
42- from .dist import DistalgoTransformer
4337from .codegen import to_source
4438from .compiler import dist_compile
4539
4640def main ():
47- parseArgs (sys .argv )
41+ opts , args = parseArgs (sys .argv )
42+ print ("rootdir is %s" % opts .rootdir )
4843
4944 start = time .time ()
50- infd = open (args ['sourcefile' ], 'r' )
51- pytree = dist_compile (infd )
52- infd .close ()
53- elapsed = time .time () - start
45+ runtime = []
46+ if opts .genfull :
47+ for f in RUNTIMEFILES :
48+ p = os .path .join (opts .rootdir , RUNTIMEPKG , f )
49+ if not os .path .isfile (p ):
50+ sys .stderr .write ("File %s not found. Please specify root directory using -D.\n " % p )
51+ sys .exit (1 )
52+ else :
53+ pfd = open (p , "r" )
54+ runtime .extend (pfd .readlines ())
55+ pfd .close ()
56+ postamble = ["\n if __name__ == \" __main__\" :\n " ,
57+ " main()\n " ]
5458
55- pysource = to_source (pytree )
59+ for f in args :
60+ infd = open (f , 'r' )
61+ pytree = dist_compile (infd )
62+ infd .close ()
5663
57- outfile = args ['sourcefile' ][:- 4 ] + ".py"
58- outfd = open (outfile , 'w' )
59- outfd .write (pysource )
60- outfd .close ()
64+ pysource = to_source (pytree )
6165
62- print ("Total compilation time: %f second(s)." % elapsed )
63- sys .exit (0 )
66+ if opts .printsource :
67+ sys .stdout .write (pysource )
68+ else :
69+ outfile = f [:- 4 ] + ".py"
70+ outfd = open (outfile , 'w' )
71+ if opts .genfull :
72+ outfd .writelines (runtime )
73+ outfd .write (pysource )
74+ if opts .genfull :
75+ outfd .writelines (postamble )
76+ outfd .close ()
77+ sys .stderr .write ("Written %s.\n " % outfile )
78+
79+ elapsed = time .time () - start
80+ sys .stderr .write ("\n Total compilation time: %f second(s).\n " % elapsed )
81+ return 0
6482
6583if __name__ == '__main__' :
6684 main ()
0 commit comments