[Pkg-mozext-commits] [adblock-plus] 12/52: Issue 1707 - Allow importing Chrome-style locales in Firefox extensions
David Prévot
taffit at moszumanska.debian.org
Thu Jan 22 21:43:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus.
commit 049ba359c8083088c03a38c9d43c272cd67a855f
Author: Wladimir Palant <trev at adblockplus.org>
Date: Tue Dec 16 23:40:20 2014 +0100
Issue 1707 - Allow importing Chrome-style locales in Firefox extensions
--HG--
extra : amend_source : fce6353c00bc3aefb7f825924f46bd92664ca4f8
---
packagerGecko.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 49 insertions(+), 9 deletions(-)
diff --git a/packagerGecko.py b/packagerGecko.py
index efb4ef7..c36718a 100644
--- a/packagerGecko.py
+++ b/packagerGecko.py
@@ -4,7 +4,14 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-import os, sys, re, hashlib, base64, urllib, json
+import os
+import sys
+import re
+import hashlib
+import base64
+import urllib
+import json
+import io
from ConfigParser import SafeConfigParser
from StringIO import StringIO
import xml.dom.minidom as minidom
@@ -56,6 +63,9 @@ def getPackageFiles(params):
def getIgnoredFiles(params):
return {'.incomplete', 'meta.properties'}
+def archive_path(path, baseDir):
+ return '/'.join(os.path.split(os.path.relpath(path, baseDir)))
+
def isValidLocale(localesDir, dir, includeIncomplete=False):
if re.search(r'[^\w\-]', dir):
return False
@@ -143,20 +153,49 @@ def createManifest(params):
templateData['defaultLocale'] = defaultLocale
return template.render(templateData).encode('utf-8')
+def importLocales(params, files):
+ SECTION = 'import_locales'
+ if not params['metadata'].has_section(SECTION):
+ return
+
+ import localeTools
+
+ for locale in params['locales']:
+ for item in params['metadata'].items(SECTION):
+ path, keys = item
+ parts = [locale if p == '*' else p for p in path.split('/')]
+ source = os.path.join(os.path.dirname(item.source), *parts)
+ if not os.path.exists(source):
+ continue
+
+ with io.open(source, 'r', encoding='utf-8') as handle:
+ data = json.load(handle)
+
+ target_name = os.path.splitext(os.path.basename(source))[0] + '.properties'
+ target = archive_path(os.path.join(getLocalesDir(params['baseDir']), locale, target_name), params['baseDir'])
+
+ files[target] = ''
+ for key, value in sorted(data.items()):
+ message = value['message']
+ files[target] += localeTools.generateStringEntry(key, message, target).encode('utf-8')
+
def fixupLocales(params, files):
global defaultLocale
- # Read in default locale data, it might not be included in files
+ # Read in default locale data, it might not be included in package files
defaultLocaleDir = os.path.join(getLocalesDir(params['baseDir']), defaultLocale)
+ reference_files = Files(getPackageFiles(params), getIgnoredFiles(params))
+ reference_files.read(defaultLocaleDir, archive_path(defaultLocaleDir, params['baseDir']))
+ reference_params = dict(params)
+ reference_params['locales'] = [defaultLocale]
+ importLocales(reference_params, reference_files)
+
reference = {}
- ignoredFiles = getIgnoredFiles(params)
- for file in os.listdir(defaultLocaleDir):
- path = os.path.join(defaultLocaleDir, file)
- if file in ignoredFiles or not os.path.isfile(path):
- continue
- data = localeTools.readFile(path)
+ for path, data in reference_files.iteritems():
+ filename = path.split('/')[-1]
+ data = localeTools.parseString(data.decode('utf-8'), filename)
if data:
- reference[file] = data
+ reference[filename] = data
for locale in params['locales']:
for file in reference.iterkeys():
@@ -308,6 +347,7 @@ def createBuild(baseDir, type="gecko", outFile=None, locales=None, buildNum=None
for name, path in getChromeSubdirs(baseDir, params['locales']).iteritems():
if os.path.isdir(path):
files.read(path, 'chrome/%s' % name)
+ importLocales(params, files)
fixupLocales(params, files)
if not 'bootstrap.js' in files:
addMissingFiles(params, files)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git
More information about the Pkg-mozext-commits
mailing list