[Pkg-mozext-commits] [adblock-plus] 245/464: Added support for reading additional contributors from an XML file and improved sort order for translators

David Prévot taffit at moszumanska.debian.org
Tue Jul 22 20:44:21 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository adblock-plus.

commit 3302425eb4dc6d55a7c95b0bec1e26e61900aff8
Author: Wladimir Palant <trev at adblockplus.org>
Date:   Fri Jun 15 12:12:33 2012 +0200

    Added support for reading additional contributors from an XML file and improved sort order for translators
---
 install.rdf.tmpl |  6 ++----
 packager.py      | 35 ++++++++++++++++++++++++++++++-----
 2 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/install.rdf.tmpl b/install.rdf.tmpl
index ff15bd1..5b29402 100644
--- a/install.rdf.tmpl
+++ b/install.rdf.tmpl
@@ -7,11 +7,9 @@
 {%- macro meta() -%}
 <em:creator>{{metadata.get('general', 'author')}}</em:creator>
 
-{%- if metadata.has_section('contributors') -%}
-{%- for option in metadata.options('contributors')|sort -%}
-<em:contributor>{{metadata.get('contributors', option)}}</em:contributor>
+{%- for contributor in contributors -%}
+<em:contributor>{{contributor}}</em:contributor>
 {%- endfor -%}
-{%- endif -%}
 
 {%- for translator in localeMetadata|translators -%}
 <em:translator>{{translator}}</em:translator>
diff --git a/packager.py b/packager.py
index 1b4e279..4b92455 100644
--- a/packager.py
+++ b/packager.py
@@ -8,6 +8,7 @@ import os, sys, re, subprocess, jinja2, buildtools, codecs, hashlib, base64, shu
 from ConfigParser import SafeConfigParser
 from StringIO import StringIO
 from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED
+import xml.dom.minidom as minidom
 import buildtools.localeTools as localeTools
 
 KNOWN_APPS = {
@@ -134,17 +135,38 @@ def readLocaleMetadata(baseDir, locales):
       result[locale] = {}
   return result
 
+def getContributors(baseDir, metadata):
+  main = []
+  additional = set()
+  if metadata.has_section('contributors'):
+    options = metadata.options('contributors')
+    options.sort()
+    for option in options:
+      value = metadata.get('contributors', option)
+      if re.search(r'\D', option):
+        match = re.search(r'^\s*(\S+)\s+//([^/\s]+)/@(\S+)\s*$', value)
+        if not match:
+          print >>sys.stderr, 'Warning: unrecognized contributor location "%s"\n' % value
+          continue
+        dom = minidom.parse(os.path.join(baseDir, match.group(1)))
+        tags = dom.getElementsByTagName(match.group(2))
+        for tag in tags:
+          if tag.hasAttribute(match.group(3)):
+            for name in re.split(r'\s*,\s*', tag.getAttribute(match.group(3))):
+              additional.add(name)
+      else:
+        main.append(value)
+  return main + sorted(additional, key=unicode.lower)
+
 def getTranslators(localeMetadata):
-  translators = {}
+  translators = set()
   for locale in localeMetadata.itervalues():
     if 'translator' in locale:
       for translator in locale['translator'].split(','):
         translator = translator.strip()
         if translator:
-          translators[translator] = True
-  result = translators.keys()
-  result.sort()
-  return result
+          translators.add(translator)
+  return sorted(translators, key=unicode.lower)
 
 def createManifest(baseDir, params):
   global KNOWN_APPS, defaultLocale
@@ -333,6 +355,8 @@ def createBuild(baseDir, outFile=None, locales=None, buildNum=None, releaseBuild
   if outFile == None:
     outFile = getDefaultFileName(baseDir, metadata, version)
 
+  contributors = getContributors(baseDir, metadata)
+
   params = {
     'locales': locales,
     'releaseBuild': releaseBuild,
@@ -340,6 +364,7 @@ def createBuild(baseDir, outFile=None, locales=None, buildNum=None, releaseBuild
     'version': version.encode('utf-8'),
     'metadata': metadata,
     'limitMetadata': limitMetadata,
+    'contributors': contributors,
   }
   files = {}
   files['install.rdf'] = createManifest(baseDir, params)

-- 
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