Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: abp_rewrite.py

Issue 29350244: Issue 4374 - Made Python code part of jshydra comply with our coding practices (Closed)
Patch Set: Merge abp_rewrite and utils module Created Aug. 28, 2016, 10:43 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | autotest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # This Source Code is subject to the terms of the Mozilla Public License 1 # This Source Code is subject to the terms of the Mozilla Public License
2 # version 2.0 (the "License"). You can obtain a copy of the License at 2 # version 2.0 (the "License"). You can obtain a copy of the License at
3 # http://mozilla.org/MPL/2.0/. 3 # http://mozilla.org/MPL/2.0/.
4 4
5 from __future__ import print_function 5 from __future__ import print_function
6 6
7 import os 7 import os
8 import platform
Sebastian Noack 2016/08/28 22:51:56 All I did with patchset #2 is removing utils.py an
9 import io
10 import zipfile
8 import subprocess 11 import subprocess
9 12
10 import utils 13 try:
14 from urllib.request import urlopen
15 except ImportError:
16 import urllib
17 import contextlib
18
19 def urlopen(*args, **kwargs):
20 return contextlib.closing(urllib.urlopen(*args, **kwargs))
21
22 JSSHELL_DIR = 'mozilla-esr31'
23 JSSHELL_URL = ('https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly'
24 '/2015/02/2015-02-25-00-22-19-{}'
25 '/jsshell-{{}}.zip'.format(JSSHELL_DIR))
26
27 JSSHELL_SUPPORTED_PLATFORMS = {
28 'Windows': 'win32',
29 'Linux': {
30 'i686': 'linux-i686',
31 'x86_64': 'linux-x86_64'
32 },
33 'Darwin': 'mac'
34 }
35
36
37 def ensure_jsshell():
38 path = os.environ.get('SPIDERMONKEY_BINARY')
39 if path and os.path.isfile(path):
40 return path
41
42 system = platform.system()
43 try:
44 build = JSSHELL_SUPPORTED_PLATFORMS[system]
45 if isinstance(build, dict):
46 build = build[platform.machine()]
47 except KeyError:
48 raise Exception('Platform {} ({}) not supported by JS shell'.format(
49 system, platform.machine()
50 ))
51
52 shell_dir = os.path.join(os.path.dirname(__file__),
53 '{}-{}'.format(JSSHELL_DIR, build))
54 if not os.path.exists(shell_dir):
55 os.makedirs(shell_dir)
56 if system == 'Windows':
57 path = os.path.join(shell_dir, 'js.exe')
58 else:
59 path = os.path.join(shell_dir, 'js')
60
61 if os.path.exists(path):
62 return path
63
64 with urlopen(JSSHELL_URL.format(build)) as response:
65 data = response.read()
66
67 with zipfile.ZipFile(io.BytesIO(data)) as archive:
68 archive.extractall(shell_dir)
69
70 if not os.path.exists(path):
71 raise Exception("Downloaded package doesn't contain JS shell")
72
73 try:
74 os.chmod(path, 0o700)
75 except:
76 pass
77
78 return path
11 79
12 80
13 def rewrite_js(args, script=None): 81 def rewrite_js(args, script=None):
14 jsshell = utils.ensureJSShell() 82 jsshell = ensure_jsshell()
15 env = {'LD_LIBRARY_PATH': os.path.relpath(os.path.dirname(jsshell))} 83 env = {'LD_LIBRARY_PATH': os.path.relpath(os.path.dirname(jsshell))}
16 base_dir = os.path.dirname(__file__) 84 base_dir = os.path.dirname(__file__)
17 85
18 if not script: 86 if not script:
19 script = os.path.join(base_dir, 'scripts', 'abprewrite.js') 87 script = os.path.join(base_dir, 'scripts', 'abprewrite.js')
20 88
21 command = [jsshell, os.path.join(base_dir, 'jshydra.js'), script] + args 89 command = [jsshell, os.path.join(base_dir, 'jshydra.js'), script] + args
22 return subprocess.check_output(command, env=env, universal_newlines=True) 90 return subprocess.check_output(command, env=env, universal_newlines=True)
OLDNEW
« no previous file with comments | « no previous file | autotest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld