mirror of
https://github.com/hyperknot/openfreemap.git
synced 2026-05-22 06:22:16 +00:00
host_manager
This commit is contained in:
92
scripts/http_host/host_manager.py
Executable file
92
scripts/http_host/host_manager.py
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import click
|
||||
import requests
|
||||
from http_host_lib.download_fonts import download_fonts
|
||||
from http_host_lib.download_tileset import download_and_extract_tileset
|
||||
|
||||
|
||||
DEFAULT_RUNS_DIR = Path('/data/ofm/http_host/runs')
|
||||
DEFAULT_ASSETS_DIR = Path('/data/ofm/http_host/assets')
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
"""
|
||||
Manages OpenFreeMap HTTP hosts, including:\n
|
||||
- Downloading tilesets\n
|
||||
- Downloading assets\n
|
||||
- Deploying the correct versions of tilesets\n
|
||||
- Mounting directories\n
|
||||
- Updating nginx config\n
|
||||
"""
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.argument('area', required=False)
|
||||
@click.option('--version', default='latest', help='Version string, like "20231227_043106_pt"')
|
||||
@click.option(
|
||||
'--runs-dir',
|
||||
help='Specify runs directory',
|
||||
type=click.Path(dir_okay=True, file_okay=False, path_type=Path),
|
||||
)
|
||||
@click.option('--list-versions', is_flag=True, help='List all versions in an area and terminate')
|
||||
def download_tileset(area: str, version: str, list_versions: bool, runs_dir: Path):
|
||||
"""
|
||||
Downloads and extracts the latest tiles.btrfs file from the public bucket.
|
||||
Version can also be specified.
|
||||
"""
|
||||
|
||||
if area not in {'planet', 'monaco'}:
|
||||
sys.exit('Please specify area: "planet" or "monaco"')
|
||||
|
||||
r = requests.get(f'https://{area}.openfreemap.com/dirs.txt')
|
||||
r.raise_for_status()
|
||||
|
||||
versions = sorted(r.text.splitlines())
|
||||
|
||||
all_versions_str = '\n'.join(versions)
|
||||
if list_versions:
|
||||
print(all_versions_str)
|
||||
return
|
||||
|
||||
if version == 'latest':
|
||||
selected_version = versions[-1]
|
||||
else:
|
||||
if version not in versions:
|
||||
sys.exit(f'Requested version is not available. Available versions:\n{all_versions_str}')
|
||||
selected_version = version
|
||||
|
||||
if not runs_dir:
|
||||
runs_dir = DEFAULT_RUNS_DIR
|
||||
|
||||
if not runs_dir.parent.exists():
|
||||
sys.exit("run dir's parent doesn't exist")
|
||||
|
||||
download_and_extract_tileset(area, selected_version, runs_dir)
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.option(
|
||||
'--assets-dir',
|
||||
help='Specify assets directory',
|
||||
type=click.Path(dir_okay=True, file_okay=False, path_type=Path),
|
||||
)
|
||||
def download_assets(assets_dir: Path):
|
||||
"""
|
||||
Downloads and extracts assets
|
||||
"""
|
||||
|
||||
if not assets_dir:
|
||||
assets_dir = DEFAULT_ASSETS_DIR
|
||||
|
||||
if not assets_dir.parent.exists():
|
||||
sys.exit("asset dir's parent doesn't exist")
|
||||
|
||||
download_fonts(assets_dir)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
cli()
|
||||
Reference in New Issue
Block a user