diff --git a/cli/commands.py b/cli/commands.py index e582a88..b182537 100644 --- a/cli/commands.py +++ b/cli/commands.py @@ -10,8 +10,6 @@ import click # Project Imports from cli.echo import cmd_help from cli.echo import error -from cli.echo import status -from cli.echo import success_info from cli.echo import value from cli.formatting import HelpColorsCommand from cli.formatting import HelpColorsGroup @@ -19,6 +17,7 @@ from cli.formatting import random_colors from cli.static import CLI_HELP from cli.static import LABEL from cli.static import E +from cli.util import build_ui from cli.util import fix_ownership from cli.util import fix_permissions from cli.util import migrate_config @@ -42,26 +41,14 @@ def hg(): pass -@hg.command("build-ui", short_help=cmd_help(E.BUTTERFLY, "Create a new UI build")) -def build_ui(): +@hg.command("build-ui", help=cmd_help(E.BUTTERFLY, "Create a new UI build")) +def build_frontend(): """Create a new UI build. Raises: click.ClickException: Raised on any errors. """ - try: - import asyncio - from hyperglass.util import build_ui - except ImportError as e: - error("Error importing UI builder", e) - - status("Starting new UI build...") - - try: - success = asyncio.run(build_ui()) - success_info("Completed build, ran", success) - except Exception as e: - error("Error building UI", e) + return build_ui() @hg.command( diff --git a/cli/util.py b/cli/util.py index 312905b..bc30b1a 100644 --- a/cli/util.py +++ b/cli/util.py @@ -9,6 +9,8 @@ from cli.echo import status from cli.echo import success from cli.static import CL from cli.static import NL +from cli.static import SUCCESS +from cli.static import VALUE from cli.static import WS from cli.static import E @@ -145,3 +147,50 @@ def migrate_systemd(source, destination): error("Error migrating example systemd service", e) success(f"Successfully migrated systemd service to: {newfile}") + + +def build_ui(): + """Create a new UI build. + + Raises: + click.ClickException: Raised on any errors. + """ + try: + import asyncio + from hyperglass.configuration import params, frontend_params + from hyperglass.util import build_frontend + except ImportError as e: + error("Error importing UI builder", e) + + status("Starting new UI build...") + + if params.general.developer_mode: + dev_mode = "production" + else: + dev_mode = "development" + + try: + success = asyncio.run( + build_frontend( + dev_mode=params.general.developer_mode, + dev_url=f"http://localhost:{str(params.general.listen_port)}/api/", + prod_url="/api/", + params=frontend_params, + force=True, + ) + ) + if success: + click.echo( + NL[1] + + E.CHECK + + click.style("Completed UI build in", **SUCCESS) + + WS[1] + + click.style(dev_mode, **VALUE) + + WS[1] + + click.style("mode", **SUCCESS) + + NL[1] + ) + except Exception as e: + error("Error building UI", e) + + return True