mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	Update perfect-scrollbar to fix stutter space-scrolling in #8544. Also reworked deprecated `element.perfectScrollbar` to `new PerfectScrollbar(element)`. Lastly, updated provision version and changed node module path to new path. This also refactors perfect-scrollbar in help.js to work with updated version of perfect-scrollbar. Because the update also changed perfect-scrollbar's css selectors for all scrollbars in zulip, we update those too. Fixes #8544.
		
			
				
	
	
		
			127 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
# Updates static files for production.
 | 
						|
 | 
						|
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
import argparse
 | 
						|
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__), '..'))
 | 
						|
import scripts.lib.setup_path_on_import
 | 
						|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
 | 
						|
from django.conf import settings
 | 
						|
from scripts.lib.node_cache import setup_node_modules
 | 
						|
 | 
						|
# check for the venv
 | 
						|
from lib import sanity_check
 | 
						|
sanity_check.check_venv(__file__)
 | 
						|
 | 
						|
parser = argparse.ArgumentParser()
 | 
						|
parser.add_argument('--prev-deploy', metavar='DIR',
 | 
						|
                    help='a previous deploy from which to reuse files if possible')
 | 
						|
parser.add_argument('--authors-not-required', action='store_true', default=False,
 | 
						|
                    help='Authors files need not be updated')
 | 
						|
args = parser.parse_args()
 | 
						|
prev_deploy = args.prev_deploy
 | 
						|
 | 
						|
os.chdir(settings.DEPLOY_ROOT)
 | 
						|
 | 
						|
# Redirect child processes' output to a log file (most recent run only).
 | 
						|
subprocess.check_call(["mkdir", "-p", "var/log"])
 | 
						|
fp = open('var/log/update-prod-static.log', 'w')
 | 
						|
 | 
						|
# Install node packages
 | 
						|
setup_node_modules(production=True, stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Build emoji
 | 
						|
subprocess.check_call(['./tools/setup/emoji/build_emoji'],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Inline CSS in emails
 | 
						|
subprocess.check_call(['./tools/inline-email-css'],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Copy over static files from the zulip_bots package
 | 
						|
subprocess.check_call(['./tools/setup/generate_zulip_bots_static_files'],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Generate custom icon webfont
 | 
						|
subprocess.check_call(['./tools/generate-custom-icon-webfont'],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Build pygment data
 | 
						|
subprocess.check_call(['./tools/setup/build_pygments_data'],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Compile Handlebars templates and minify JavaScript.
 | 
						|
subprocess.check_call(['./tools/minify-js'] +
 | 
						|
                      (['--prev-deploy', prev_deploy] if prev_deploy else []),
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Copy the KaTeX files outside node_modules
 | 
						|
subprocess.check_call(['mkdir', '-p',
 | 
						|
                       os.path.join(settings.STATIC_ROOT,
 | 
						|
                                    'node_modules/katex/dist/')],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
subprocess.check_call(['cp', 'node_modules/katex/dist/katex.css',
 | 
						|
                       os.path.join(settings.STATIC_ROOT,
 | 
						|
                                    'node_modules/katex/dist/')],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
subprocess.check_call(['cp', '-R', 'node_modules/katex/dist/fonts',
 | 
						|
                       os.path.join(settings.STATIC_ROOT,
 | 
						|
                                    'node_modules/katex/dist/fonts')],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
CSS_FILES = [
 | 
						|
    'node_modules/perfect-scrollbar/css/perfect-scrollbar.css',
 | 
						|
    'node_modules/flatpickr/dist/flatpickr.css',
 | 
						|
    'node_modules/flatpickr/dist/plugins/confirmDate/confirmDate.css',
 | 
						|
]
 | 
						|
 | 
						|
# Copy CSS files in node_modules to prod-static/serve
 | 
						|
for css_file in CSS_FILES:
 | 
						|
    subprocess.check_call(['cp', '--parents', css_file, settings.STATIC_ROOT])
 | 
						|
 | 
						|
# Collect the files that we're going to serve; this creates prod-static/serve.
 | 
						|
subprocess.check_call(['./manage.py', 'collectstatic', '--no-default-ignore',
 | 
						|
                       '--noinput', '-i', 'assets', '-i' 'node_modules'],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
if not settings.PRODUCTION:
 | 
						|
    # When building a release tarball, we need to move staticfiles.json
 | 
						|
    subprocess.check_call(['mv', 'prod-static/serve/staticfiles.json', 'staticfiles.json'],
 | 
						|
                          stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Compile translation strings to generate `.mo` files.
 | 
						|
subprocess.check_call(['./manage.py', 'compilemessages'],
 | 
						|
                      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)
 | 
						|
 | 
						|
# Move language_options.json to the production release
 | 
						|
subprocess.check_call(['cp', '-aT', 'static/locale',
 | 
						|
                       os.path.join(settings.STATIC_ROOT, 'locale')],
 | 
						|
                      stdout=fp, stderr=fp)
 | 
						|
 | 
						|
# Generate /team page markdown for authors
 | 
						|
authors_cmd = ['./tools/update-authors-json']
 | 
						|
if os.environ.get("TRAVIS"):
 | 
						|
    authors_cmd.append("--use-fixture")
 | 
						|
if args.authors_not_required:
 | 
						|
    authors_cmd.append("--not-required")
 | 
						|
subprocess.check_call(authors_cmd, stdout=fp, stderr=fp)
 | 
						|
 | 
						|
fp.close()
 |