mirror of
https://github.com/checktheroads/hyperglass
synced 2024-05-11 05:55:08 +00:00
52 lines
1.3 KiB
Python
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)
|