| LEFT | RIGHT | 
|   1 # coding: utf-8 |   1 # coding: utf-8 | 
|   2  |   2  | 
|   3 # This Source Code is subject to the terms of the Mozilla Public License |   3 # This Source Code is subject to the terms of the Mozilla Public License | 
|   4 # version 2.0 (the "License"). You can obtain a copy of the License at |   4 # version 2.0 (the "License"). You can obtain a copy of the License at | 
|   5 # http://mozilla.org/MPL/2.0/. |   5 # http://mozilla.org/MPL/2.0/. | 
|   6  |   6  | 
|   7 from contextlib import closing |   7 from contextlib import closing | 
|   8 import os |   8 import os | 
|   9 import platform |   9 import platform | 
|  10 from StringIO import StringIO |  10 from StringIO import StringIO | 
|  11 import sys |  11 import sys | 
|  12 import urllib |  12 import urllib | 
|  13 import zipfile |  13 import zipfile | 
|  14  |  14  | 
|  15 JSSHELL_VERSION = "31.5.0" |  15 JSSHELL_DIR = "mozilla-esr31" | 
|  16 JSSHELL_URL = ("https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly" |  16 JSSHELL_URL = ("https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly" | 
|  17                "/2015/02/2015-02-25-00-22-19-mozilla-esr31/jsshell-%s.zip") |  17                "/2015/02/2015-02-25-00-22-19-%s/jsshell-%%s.zip" % JSSHELL_DIR) | 
|  18  |  18  | 
|  19 JSSHELL_SUPPORTED_PLATFORMS = { |  19 JSSHELL_SUPPORTED_PLATFORMS = { | 
|  20   "win32": "win32", |  20   "win32": "win32", | 
|  21   "linux2": { |  21   "linux2": { | 
|  22     "i686": "linux-i686", |  22     "i686": "linux-i686", | 
|  23     "x86_64": "linux-x86_64" |  23     "x86_64": "linux-x86_64" | 
|  24   }, |  24   }, | 
|  25   "darwin": "mac" |  25   "darwin": "mac" | 
|  26 } |  26 } | 
|  27  |  27  | 
|  28 def ensureJSShell(): |  28 def ensureJSShell(): | 
|  29   baseDir = os.path.dirname(__file__) |  29   baseDir = os.path.dirname(__file__) | 
|  30   shell_dir = os.path.join(baseDir, "jsshell-%s" % JSSHELL_VERSION) |  30   shell_dir = os.path.join(baseDir, JSSHELL_DIR) | 
|  31  |  31  | 
|  32   if not os.path.exists(shell_dir): |  32   if not os.path.exists(shell_dir): | 
|  33     os.makedirs(shell_dir) |  33     os.makedirs(shell_dir) | 
|  34   if sys.platform == 'win32': |  34   if sys.platform == 'win32': | 
|  35     path = os.path.join(shell_dir, 'js.exe') |  35     path = os.path.join(shell_dir, 'js.exe') | 
|  36   else: |  36   else: | 
|  37     path = os.path.join(shell_dir, 'js') |  37     path = os.path.join(shell_dir, 'js') | 
|  38  |  38  | 
|  39   if os.path.exists(path): |  39   if os.path.exists(path): | 
|  40     return path |  40     return path | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  54  |  54  | 
|  55   if not os.path.exists(path): |  55   if not os.path.exists(path): | 
|  56     raise Exception('Downloaded package didn\'t contain JS shell executable') |  56     raise Exception('Downloaded package didn\'t contain JS shell executable') | 
|  57  |  57  | 
|  58   try: |  58   try: | 
|  59     os.chmod(path, 0700) |  59     os.chmod(path, 0700) | 
|  60   except: |  60   except: | 
|  61     pass |  61     pass | 
|  62  |  62  | 
|  63   return path |  63   return path | 
| LEFT | RIGHT |