1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00

52 lines
1.3 KiB
Python

"""CLI utility functions."""
# Standard Library
import sys
import asyncio
# Third Party
import typer
# Local
from .echo import echo
def build_ui(timeout: int) -> None:
"""Create a new UI build."""
# Project
from hyperglass.state import use_state
from hyperglass.configuration import init_user_config
from hyperglass.util.frontend import build_frontend
# Populate configuration to Redis prior to accessing it.
init_user_config()
state = use_state()
dev_mode = "production"
if state.settings.dev_mode:
dev_mode = "development"
try:
build_success = asyncio.run(
build_frontend(
app_path=state.settings.app_path,
dev_mode=state.settings.dev_mode,
dev_url=f"http://localhost:{state.settings.port!s}/",
force=True,
params=state.ui_params,
prod_url="/api/",
timeout=timeout,
)
)
if build_success:
echo.success("Completed UI build in {} mode", dev_mode)
except Exception as e:
if not sys.stdout.isatty():
echo._console.print_exception(show_locals=True)
raise typer.Exit(1)
echo.error("Error building UI: {!s}", e)
raise typer.Exit(1)