Files
zulip/tools/update-prod-static
Shubham Padia 7db29f29de help: Serve help center build without relative links for zulip.com.
We have a copy of help center with relative links disabled which is
reserved for root domains without an organisation on the root domain.
Ideally, we should have some logic to determine whether we are on such
a root domain or not. For practical short term purposes, since this
type of documentation is mainly useful for zulip.com, we add an
exception for zulip.com.
2025-09-03 09:28:15 -07:00

71 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
# Updates static files for production.
import os
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__), ".."))
from scripts.lib.setup_path import setup_path
setup_path()
# check for the venv
from tools.lib import sanity_check
sanity_check.check_venv(__file__)
os.environ["DJANGO_SETTINGS_MODULE"] = "zproject.settings"
os.environ["ZULIP_COLLECTING_STATIC"] = "1"
from django.conf import settings
from scripts.lib.node_cache import setup_node_modules
from scripts.lib.zulip_tools import assert_not_running_as_root, run
assert_not_running_as_root()
os.chdir(settings.DEPLOY_ROOT)
# Install node packages
setup_node_modules(production=True)
# Build emoji
run(["./tools/setup/emoji/build_emoji"])
# Copy over static files from the zulip_bots and integrations packages
run(["./tools/setup/generate_bots_integrations_static_files.py"])
# Build pygments data
run(["./tools/setup/build_pygments_data"])
# Build time zone data
run(["./tools/setup/build_timezone_values"])
# Generate landing page images of various sizes and formats if we will
# need them.
if settings.CORPORATE_ENABLED:
run(["./tools/setup/generate_landing_page_images.py"])
run(
[
"./tools/build-help-center",
"--no-relative-links",
"--out-dir",
"./dist_no_relative_links",
]
)
run(["./tools/build-help-center"])
# Create webpack bundle
run(["./tools/webpack", "--quiet"])
# Collect the files that we're going to serve; this creates prod-static/serve.
run(["./manage.py", "collectstatic", "-v0", "--noinput"])
# Compile translation strings to generate `.mo` files.
run(["./manage.py", "compilemessages", "-v0", "--ignore=*"])
# Needed if PRODUCTION
os.makedirs("prod-static", exist_ok=True)