From 21035568f90300bde992f5a05b3efa03acc14aa1 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Mon, 1 Sep 2025 17:16:48 -0600 Subject: [PATCH] Updated frontend build script --- scripts/build-frontend.py | 44 ++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/scripts/build-frontend.py b/scripts/build-frontend.py index ad3e5c2..b8e746a 100644 --- a/scripts/build-frontend.py +++ b/scripts/build-frontend.py @@ -1,16 +1,26 @@ -# noqa: INP001 import os import shutil import subprocess +from contextlib import contextmanager from sys import stderr from hatchling.builders.hooks.plugin.interface import BuildHookInterface +@contextmanager +def chdir(path): + original = os.getcwd() + os.chdir(path) + try: + yield + finally: + os.chdir(original) + + class CustomBuildHook(BuildHookInterface): def initialize(self, version, build_data): super().initialize(version, build_data) - stderr.write(">>> Building Jacloud frontend\n") + stderr.write(">>> Building the frontend\n") npm = None bun = shutil.which("bun") if bun is None: @@ -20,18 +30,18 @@ class CustomBuildHook(BuildHookInterface): "Bun or NodeJS `npm` is required for building but neither was found" ) # npm --prefix doesn't work on Windows, so we chdir instead - os.chdir("frontend") - try: - if npm: - stderr.write("### npm install\n") - subprocess.run([npm, "install"], check=True) # noqa: S603 - stderr.write("\n### npm run build\n") - subprocess.run([npm, "run", "build"], check=True) # noqa: S603 - else: - assert bun - stderr.write("### bun install\n") - subprocess.run([bun, "install"], check=True) # noqa: S603 - stderr.write("\n### bun run build\n") - subprocess.run([bun, "run", "build"], check=True) # noqa: S603 - finally: - os.chdir("..") + with chdir("frontend"): + try: + if npm: + stderr.write("### npm install\n") + subprocess.run([npm, "install"], check=True) # noqa: S603 + stderr.write("\n### npm run build\n") + subprocess.run([npm, "run", "build"], check=True) # noqa: S603 + else: + assert bun + stderr.write("### bun --bun install\n") + subprocess.run([bun, "--bun", "install"], check=True) # noqa: S603 + stderr.write("\n### bun --bun run build\n") + subprocess.run([bun, "--bun", "run", "build"], check=True) # noqa: S603 + except Exception: + stderr.write("Error occurred while building frontend\n")