scripts/update_assets.py (49 lines of code) (raw):

#!/usr/bin/env python3 import argparse import os import shutil import subprocess from pathlib import Path def clean_static_dirs(verbose: bool = False): HOME = os.environ.get('HOME') STATIC_DIRS = ['static-build', 'site-static'] for directory in STATIC_DIRS: path = Path(HOME) / directory path.mkdir(parents=True, exist_ok=True) for entry in path.iterdir(): entry_path = entry.as_posix() if verbose: print(f'Removing {entry_path}') if entry.is_dir(): shutil.rmtree(entry_path) else: os.remove(entry_path) def update_assets(verbose: bool = False): clean_static_dirs(verbose) script_prefix = ['python3', 'manage.py'] environment = os.environ.copy() # Always run in production mode without any development settings environment['DJANGO_SETTINGS_MODULE'] = 'olympia.lib.settings_base' subprocess.run( ['npm', 'run', 'build'], check=True, env=environment, ) subprocess.run( script_prefix + ['generate_jsi18n_files'], check=True, env=environment, ) subprocess.run( script_prefix + ['generate_js_swagger_files'], check=True, env=environment, ) subprocess.run( script_prefix + ['collectstatic', '--noinput', '--clear'], check=True, env=environment, ) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--verbose', action='store_true') args = parser.parse_args() update_assets(args.verbose)