diff --git a/scripts/http_host/host_manager.py b/scripts/http_host/host_manager.py index 21ed521..d073b4b 100755 --- a/scripts/http_host/host_manager.py +++ b/scripts/http_host/host_manager.py @@ -7,12 +7,17 @@ from pathlib import Path import click import requests from http_host_lib import DEFAULT_ASSETS_DIR, DEFAULT_RUNS_DIR, MNT_DIR -from http_host_lib.download_assets import download_fonts, download_natural_earth, download_sprites +from http_host_lib.download_assets import ( + download_fonts, + download_natural_earth, + download_sprites, + download_styles, +) from http_host_lib.download_tileset import download_and_extract_tileset from http_host_lib.mount import clean_up_mounts, create_fstab from http_host_lib.nginx import write_nginx_config from http_host_lib.set_tileset_versions import set_tileset_versions -from http_host_lib.utils import assert_linux, assert_single_process, assert_sudo +from http_host_lib.utils import assert_linux, assert_sudo @click.group() @@ -94,9 +99,11 @@ def download_assets(assets_dir: Path): sys.exit("asset dir's parent doesn't exist") download_fonts(assets_dir) - download_natural_earth(assets_dir) + download_styles(assets_dir) download_sprites(assets_dir) + download_natural_earth(assets_dir) + @cli.command() def mount(): diff --git a/scripts/http_host/http_host_lib/download_assets.py b/scripts/http_host/http_host_lib/download_assets.py index e3f0f55..b4696a2 100644 --- a/scripts/http_host/http_host_lib/download_assets.py +++ b/scripts/http_host/http_host_lib/download_assets.py @@ -10,44 +10,50 @@ from http_host_lib.utils import download_file_aria2, download_if_size_differs def download_fonts(assets_dir: Path): """ Download and extract font assets if their file size differ. - Making updates atomic, with extraction to a temp dest + rename """ fonts_dir = assets_dir / 'fonts' fonts_dir.mkdir(exist_ok=True, parents=True) - fonts_temp = assets_dir / 'fonts_temp' + url = 'https://assets.openfreemap.com/fonts/ofm.tar.gz' + local_file = fonts_dir / 'ofm.tar.gz' + if not download_if_size_differs(url, local_file): + return - for font in ['ofm']: - url = f'https://assets.openfreemap.com/fonts/{font}.tar.gz' - local_file = fonts_dir / f'{font}.tar.gz' - if not download_if_size_differs(url, local_file): - continue + ofm_dir = fonts_dir / 'ofm' + shutil.rmtree(ofm_dir, ignore_errors=True) - shutil.rmtree(fonts_temp, ignore_errors=True) - fonts_temp.mkdir() + subprocess.run( + ['tar', '-xzf', local_file, '-C', fonts_dir], + check=True, + ) - subprocess.run( - ['tar', '-xzf', local_file, '-C', fonts_temp], - check=True, - ) - target_dir = fonts_dir / font - target_dir_renamed = fonts_dir / f'{font}.bak' - temp_dir = fonts_temp / font +def download_styles(assets_dir: Path): + """ + Download and extract style assets if their file size differ. + """ - if target_dir.exists(): - target_dir.rename(target_dir_renamed) - temp_dir.rename(target_dir) + styles_dir = assets_dir / 'styles' + styles_dir.mkdir(exist_ok=True, parents=True) - shutil.rmtree(target_dir_renamed, ignore_errors=True) + url = 'https://assets.openfreemap.com/styles/ofm.tar.gz' + local_file = styles_dir / 'ofm.tar.gz' + if not download_if_size_differs(url, local_file): + return - shutil.rmtree(fonts_temp, ignore_errors=True) + ofm_dir = styles_dir / 'ofm' + shutil.rmtree(ofm_dir, ignore_errors=True) + + subprocess.run( + ['tar', '-xzf', local_file, '-C', styles_dir], + check=True, + ) def download_sprites(assets_dir: Path): """ - Download and extract sprites if their file size differ. + Download and extract sprites if the version is not available """ sprites_dir = assets_dir / 'sprites'