Files
zulip/tools/update-prod-static
Allie Jones 4de0325a9d Install node dependencies using npm.
The node packages 'jQuery' and 'jquery' are different--'jQuery' is the
legacy support package that is needed for Zulip so the require statements
in the tests were updated.

Travis uses node 4.0 by default and we are using 0.10, so the command to
install the correct version had to be added to the .travis.yml file.
2015-11-06 09:08:59 -08:00

59 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python2.7
# Updates static files for production.
from __future__ import absolute_import
import os
import subprocess
import optparse
import sys
# We need settings so we can figure out where the prod-static directory is.
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
from django.conf import settings
parser = optparse.OptionParser()
parser.add_option('--prev-deploy', nargs=1, metavar='DIR',
help='A previous deploy from which to reuse files if possible')
(options, args) = parser.parse_args()
prev_deploy = options.prev_deploy
os.chdir(settings.DEPLOY_ROOT)
# Redirect child processes' output to a log file (most recent run only).
fp = open('update-prod-static.log', 'w')
# Install node packages
subprocess.check_call(['npm', 'install'], stdout=fp, stderr=fp);
# Compile Handlebars templates and minify JavaScript.
subprocess.check_call(['python', 'tools/minify-js']
+ (['--prev-deploy', prev_deploy] if prev_deploy else []),
stdout=fp, stderr=fp)
# Build emoji
subprocess.check_call(['bash', '-ex', 'tools/emoji_dump/build_emoji'],
stdout=fp, stderr=fp)
# Download and include zxcvbn.js
subprocess.check_call(['bash', '-ex', 'tools/download-zxcvbn'],
stdout=fp, stderr=fp)
# Collect the files that we're going to serve.
subprocess.check_call(['python', './manage.py', 'collectstatic', '--noinput'],
stdout=fp, stderr=fp)
# Move the source maps out of the serve/ directory and into their
# proper place.
subprocess.check_call(['rm', '-rf', 'prod-static/source-map'],
stdout=fp, stderr=fp)
subprocess.check_call(['mkdir', '-p', 'prod-static'], # Needed if PRODUCTION
stdout=fp, stderr=fp)
subprocess.check_call(['mv', os.path.join(settings.STATIC_ROOT, 'source-map'),
'prod-static/source-map'],
stdout=fp, stderr=fp)
fp.close()