paul@0 | 1 | #!/usr/bin/env python |
paul@0 | 2 | |
paul@0 | 3 | from errors import * |
paul@0 | 4 | from os.path import abspath, exists, join, split |
paul@0 | 5 | from time import time |
paul@0 | 6 | import importer |
paul@0 | 7 | import sys |
paul@0 | 8 | |
paul@0 | 9 | libdirs = [ |
paul@0 | 10 | join(split(__file__)[0], "lib"), |
paul@0 | 11 | "/usr/share/lichen/lib" |
paul@0 | 12 | ] |
paul@0 | 13 | |
paul@0 | 14 | def load_module(filename, module_name): |
paul@0 | 15 | for libdir in libdirs: |
paul@0 | 16 | path = join(libdir, filename) |
paul@0 | 17 | if exists(path): |
paul@0 | 18 | return i.load_from_file(path, module_name) |
paul@0 | 19 | return None |
paul@0 | 20 | |
paul@0 | 21 | def stopwatch(activity, now): |
paul@0 | 22 | print >>sys.stderr, "%s took %.2f seconds" % (activity, time() - now) |
paul@0 | 23 | return time() |
paul@0 | 24 | |
paul@0 | 25 | # Main program. |
paul@0 | 26 | |
paul@0 | 27 | if __name__ == "__main__": |
paul@0 | 28 | args = sys.argv[2:] |
paul@0 | 29 | path = libdirs + sys.path[:] |
paul@0 | 30 | |
paul@0 | 31 | filename = abspath(sys.argv[1]) |
paul@0 | 32 | path.append(split(filename)[0]) |
paul@0 | 33 | |
paul@0 | 34 | verbose = "-v" in args |
paul@0 | 35 | reset = "-r" in args |
paul@0 | 36 | |
paul@0 | 37 | # Load the program. |
paul@0 | 38 | |
paul@0 | 39 | try: |
paul@0 | 40 | start = now = time() |
paul@0 | 41 | |
paul@0 | 42 | i = importer.Importer(path, "_cache", verbose) |
paul@0 | 43 | m = i.initialise(filename, reset) |
paul@0 | 44 | i.finalise() |
paul@0 | 45 | |
paul@0 | 46 | now = stopwatch("Inspection", now) |
paul@0 | 47 | |
paul@0 | 48 | # Report any errors. |
paul@0 | 49 | |
paul@0 | 50 | except ProcessingError, exc: |
paul@0 | 51 | print exc |
paul@0 | 52 | if "-tb" in args: |
paul@0 | 53 | raise |
paul@0 | 54 | elif "-exit" in args: |
paul@0 | 55 | sys.exit(1) |
paul@0 | 56 | |
paul@0 | 57 | except KeyboardInterrupt: |
paul@0 | 58 | if "-exit" in args: |
paul@0 | 59 | sys.exit(2) |
paul@0 | 60 | else: |
paul@0 | 61 | raise |
paul@0 | 62 | |
paul@0 | 63 | else: |
paul@0 | 64 | if "-exit" in args: |
paul@0 | 65 | sys.exit(0) |
paul@0 | 66 | |
paul@0 | 67 | # vim: tabstop=4 expandtab shiftwidth=4 |