Index: packagerChrome.py |
=================================================================== |
--- a/packagerChrome.py |
+++ b/packagerChrome.py |
@@ -123,20 +123,16 @@ def createManifest(params, files): |
licenseComment = re.compile(r'/\*.*?\*/', re.S) |
data = json.loads(re.sub(licenseComment, '', manifest, 1)) |
if '_dummy' in data: |
del data['_dummy'] |
manifest = json.dumps(data, sort_keys=True, indent=2) |
return manifest.encode('utf-8') |
-def createPoller(params): |
- template = getTemplate('chromeDevenvPoller__.js.tmpl') |
- return template.render(params).encode('utf-8'); |
- |
def createInfoModule(params): |
template = getTemplate('chromeInfo.js.tmpl') |
return template.render(params).encode('utf-8'); |
def convertJS(params, files): |
from jshydra.abp_rewrite import doRewrite |
for item in params['metadata'].items('convert_js'): |
@@ -344,17 +340,17 @@ def createBuild(baseDir, type='chrome', |
'version': version, |
'experimentalAPI': experimentalAPI, |
'devenv': devenv, |
'metadata': metadata, |
} |
files = Files(getPackageFiles(params), getIgnoredFiles(params), |
process=lambda path, data: processFile(path, data, params)) |
- |
+ |
if metadata.has_section('mapping'): |
files.readMappedFiles(metadata.items('mapping')) |
files.read(baseDir) |
if metadata.has_section('convert_js'): |
convertJS(params, files) |
if metadata.has_section('convert_img'): |
@@ -364,22 +360,25 @@ def createBuild(baseDir, type='chrome', |
if metadata.has_section('preprocess'): |
files.preprocess( |
[f for f, _ in metadata.items('preprocess')], |
{'needsExt': True} |
) |
if metadata.has_section('import_locales'): |
importGeckoLocales(params, files) |
- |
+ |
files['manifest.json'] = createManifest(params, files) |
fixMissingTranslations(files) |
if devenv: |
- files['devenvPoller__.js'] = createPoller(params) |
+ import buildtools |
+ import random |
+ files.read(os.path.join(buildtools.__path__[0], 'chromeDevenvPoller__.js'), relpath='devenvPoller__.js') |
+ files['devenvVersion__'] = str(random.random()) |
if (metadata.has_option('general', 'backgroundScripts') and |
'lib/info.js' in re.split(r'\s+', metadata.get('general', 'backgroundScripts')) and |
'lib/info.js' not in files): |
files['lib/info.js'] = createInfoModule(params) |
zipdata = files.zipToString() |
signature = None |
@@ -392,32 +391,8 @@ def createBuild(baseDir, type='chrome', |
def createDevEnv(baseDir, type): |
fileBuffer = StringIO() |
createBuild(baseDir, type=type, outFile=fileBuffer, devenv=True, releaseBuild=True) |
from zipfile import ZipFile |
zip = ZipFile(StringIO(fileBuffer.getvalue()), 'r') |
zip.extractall(os.path.join(baseDir, 'devenv')) |
zip.close() |
- |
- print 'Development environment created, waiting for connections from active extensions...' |
- metadata = readMetadata(baseDir, type) |
- connections = [0] |
- |
- import SocketServer, time, thread |
- |
- class ConnectionHandler(SocketServer.BaseRequestHandler): |
- def handle(self): |
- connections[0] += 1 |
- self.request.sendall('HTTP/1.0 OK\nConnection: close\n\n%s' % metadata.get('general', 'basename')) |
- |
- server = SocketServer.TCPServer(('localhost', 43816), ConnectionHandler) |
- |
- def shutdown_server(server): |
- time.sleep(10) |
- server.shutdown() |
- thread.start_new_thread(shutdown_server, (server,)) |
- server.serve_forever() |
- |
- if connections[0] == 0: |
- print 'Warning: No incoming connections, extension probably not active in the browser yet' |
- else: |
- print 'Handled %i connection(s)' % connections[0] |