Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/bin/build.py
diff options
context:
space:
mode:
Diffstat (limited to 'bin/build.py')
-rwxr-xr-xbin/build.py116
1 files changed, 35 insertions, 81 deletions
diff --git a/bin/build.py b/bin/build.py
index 7400d7f..b6ec82a 100755
--- a/bin/build.py
+++ b/bin/build.py
@@ -50,41 +50,6 @@ from subprocess import Popen, PIPE
import xml.parsers.expat
from tempfile import mkstemp
-MINIFY_PRODUCTS = {
- 'js': {
- 'js/__utm.min.js': [
- { 'file':'js/__utm.js' }
- ],
- 'js/jquery.addons.min.js': [
- { 'file':'js/jquery-compressed.js' },
- { 'file':'js/addons.js' }
- ],
- 'js/amo2009/amo2009.min.js': [
- # This list is repeated in site/app/views/layouts/amo2009.thtml
- { 'file':'js/jquery-compressed.js' },
- { 'file':'js/jquery.cookie.js' },
- { 'file':'js/amo2009/global.js' },
- { 'file':'js/amo2009/slimbox2.js' },
- { 'file':'js/amo2009/addons.js' },
- { 'file':'js/amo2009/global-mozilla.js' }
- ]
- },
- 'css': {
- 'css/style.min.css': [
- { 'file':'css/type.css' },
- { 'file':'css/color.css' },
- { 'file':'css/screen.css', 'prefix':'@media screen, projection {', 'suffix':'}' },
- { 'file':'css/print.css', 'prefix':'@media print {', 'suffix':'}' },
- ],
- 'css/amo2009/style.min.css': [
- { 'file':'css/amo2009/main.css' },
- { 'file':'css/amo2009/slimbox2.css' },
- { 'file':'css/amo2009/main-mozilla.css' },
- { 'file':'css/amo2009/legacy.css' }
- ]
- }
-}
-
# contants
REVISIONS_PHP_TEMPLATE = """\
<?php
@@ -153,19 +118,13 @@ class Minifier(object):
destName = tempfile[1]
try:
for source in sourceNames:
-
- # source expected to be either a plain string, or a
- # dict describing filename / prefix / suffix
- prefix = suffix = ''
- if type(source) != dict:
- sourceFileName = source
- else:
+ try:
+ prefix = source['prefix']
sourceFileName = source['file']
- if source.has_key('prefix'):
- prefix = source['prefix']
- if source.has_key('suffix'):
- suffix = source['suffix']
-
+ suffix = source['suffix']
+ except TypeError:
+ prefix = suffix = ''
+ sourceFileName = source
sourceFile = open(sourceFileName)
try:
destinationFile.write(prefix)
@@ -207,20 +166,20 @@ def updateRevisions():
tree_rev = rp.getLatestRevision('https://svn.mozilla.org/addons/trunk/')
print "Latest Tree Revision:", tree_rev
- repo = 'https://svn.mozilla.org/addons/trunk/site/app/webroot/'
- revs = {}
- for rev_type in ('js', 'css'):
- files = []
- for fn, parts in MINIFY_PRODUCTS[rev_type].iteritems():
- for part in parts:
- files.append((type(part) == dict) and part['file'] or part)
- revs[rev_type] = rp.getMaxRevision([ repo + file for file in files ])
- print "%s Revision: %s" % (rev_type, revs[rev_type])
+ css_repo = 'https://svn.mozilla.org/addons/trunk/site/app/webroot/css/'
+ css_files = ['color.css', 'screen.css', 'type.css', 'print.css']
+ css_rev = rp.getMaxRevision([ css_repo + css_file for css_file in css_files ])
+ print "CSS Revision:", css_rev
+
+ js_repo = 'https://svn.mozilla.org/addons/trunk/site/app/webroot/js/'
+ js_files = ['jquery-compressed.js', 'addons.js']
+ js_rev = rp.getMaxRevision([ js_repo + js_file for js_file in js_files ])
+ print "JS Revision:", js_rev
revs_file = os.path.join(script_dir, '..', 'site', 'app', 'config', 'revisions.php')
try:
rf = open(revs_file, 'w')
- rf.write(REVISIONS_PHP_TEMPLATE % (tree_rev, revs['css'], revs['js']))
+ rf.write(REVISIONS_PHP_TEMPLATE % (tree_rev, css_rev, js_rev))
rf.close()
except IOError, e:
print "Error writing revision.php file:", e
@@ -231,31 +190,26 @@ def concatAndMinify():
minifier = Minifier()
webroot = os.path.join(script_dir, '..', 'site', 'app', 'webroot')
+
+ print 'Concatenating JS'
+ js_files = ['jquery-compressed.js', 'addons.js']
+ js_concatenated = minifier.concatFiles(sourceNames=[ os.path.join(webroot, 'js', js_file) for js_file in js_files ])
+ print 'Minifying JS'
+ minifier.minify('js', os.path.join(webroot, 'js', '__utm.js'), os.path.join(webroot, 'js', '__utm.min.js'))
+ minifier.minify('js', js_concatenated, os.path.join(webroot, 'js', 'jquery.addons.min.js'))
+ os.remove(js_concatenated)
+
+ print 'Concatenating CSS'
+ css_concatenated = minifier.concatFiles(sourceNames=[
+ os.path.join(webroot, 'css', 'type.css'),
+ os.path.join(webroot, 'css', 'color.css'),
+ {'prefix': "@media screen, projection {", 'file': os.path.join(webroot, 'css', 'screen.css'), 'suffix':'}'},
+ {'prefix': "@media print {", 'file': os.path.join(webroot, 'css', 'print.css'), 'suffix':'}'},
+ ])
+ print 'Minifying CSS'
+ minifier.minify('css', css_concatenated, os.path.join(webroot, 'css', 'style.min.css'))
+ os.remove(css_concatenated)
- for product_type, products in MINIFY_PRODUCTS.iteritems():
- for product_fn, product_parts in products.iteritems():
-
- # Make the final product path absolute.
- product_fn = os.path.join(webroot, *product_fn.split('/'))
-
- # Make all product part file paths absolute.
- abs_parts = []
- for spec in product_parts:
- spec['file'] = os.path.join(webroot, *spec['file'].split('/'))
- abs_parts.append(spec)
-
- # Concatenate all the product parts to a temp file.
- print 'Concatenating %s (%s)' % (product_type, product_fn)
- print "\n".join([" * %s" % x['file'] for x in abs_parts])
- concat_fn = minifier.concatFiles(sourceNames=abs_parts)
-
- # Minify the temp file for product type, dump into final
- # product path.
- print 'Minifying %s (%s)' % (product_type, product_fn)
- minifier.minify(product_type, concat_fn, product_fn)
-
- # Clean up the intermediate temp file.
- os.remove(concat_fn)
def compilePo():
"""compile all .po files to Gettext .mo files"""