diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-03-19 19:53:27 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-03-19 19:53:27 +0100 |
commit | c52c59f8581418934ac15a0510fcf3639125e508 (patch) | |
tree | d41a5a85da411e48d064cceacf40f555c8679e73 /mitmproxy/script/script.py | |
parent | 4be9074b492ec49a4ddd163be72ed835e8feb6f3 (diff) | |
download | mitmproxy-c52c59f8581418934ac15a0510fcf3639125e508.tar.gz mitmproxy-c52c59f8581418934ac15a0510fcf3639125e508.tar.bz2 mitmproxy-c52c59f8581418934ac15a0510fcf3639125e508.zip |
port mitmproxy.scripts to py3
Diffstat (limited to 'mitmproxy/script/script.py')
-rw-r--r-- | mitmproxy/script/script.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/mitmproxy/script/script.py b/mitmproxy/script/script.py index edc17d43..f142daca 100644 --- a/mitmproxy/script/script.py +++ b/mitmproxy/script/script.py @@ -8,6 +8,9 @@ import os import shlex import traceback import sys + +import six + from ..exceptions import ScriptException @@ -40,7 +43,8 @@ class Script(object): def parse_command(command): if not command or not command.strip(): raise ScriptException("Empty script command.") - if os.name == "nt": # Windows: escape all backslashes in the path. + # Windows: escape all backslashes in the path. + if os.name == "nt": # pragma: no cover backslashes = shlex.split(command, posix=False)[0].count("\\") command = command.replace("\\", "\\\\", backslashes) args = shlex.split(command) # pragma: nocover @@ -71,10 +75,15 @@ class Script(object): self.ns = {'__file__': os.path.abspath(self.args[0])} sys.path.append(script_dir) try: - execfile(self.args[0], self.ns, self.ns) + with open(self.filename) as f: + code = compile(f.read(), self.filename, 'exec') + exec (code, self.ns, self.ns) except Exception as e: - # Python 3: use exception chaining, https://www.python.org/dev/peps/pep-3134/ - raise ScriptException(traceback.format_exc(e)) + six.reraise( + ScriptException, + ScriptException(str(e)), + sys.exc_info()[2] + ) finally: sys.path.pop() return self.run("start", self.args) @@ -103,6 +112,10 @@ class Script(object): try: return f(self.ctx, *args, **kwargs) except Exception as e: - raise ScriptException(traceback.format_exc(e)) + six.reraise( + ScriptException, + ScriptException(str(e)), + sys.exc_info()[2] + ) else: return None |