From bcde5bad63c98a710b8773320fb766e8d5653dd4 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 15 Nov 2025 14:21:50 +0100 Subject: [PATCH] build_webUI command does it all --- scripts/build_interface.py | 41 +++++++++++++++++++------------------- scripts/update_all.sh | 2 +- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/scripts/build_interface.py b/scripts/build_interface.py index e72afd68d..069e8c774 100755 --- a/scripts/build_interface.py +++ b/scripts/build_interface.py @@ -10,11 +10,11 @@ def get_pnpm_executable(): """Get the appropriate pnpm executable for the current platform.""" # Try different pnpm executable names pnpm_names = ['pnpm', 'pnpm.cmd', 'pnpm.exe'] - + for name in pnpm_names: if shutil.which(name): return name - + # Fallback to pnpm if not found return 'pnpm' @@ -30,14 +30,14 @@ def run_command_in_directory(command, directory): capture_output=True, text=True ) - + if result.stdout: print(result.stdout) if result.stderr: print(result.stderr) - + return True - + except subprocess.CalledProcessError as e: print(f"Command failed: {command}") print(f"Error: {e}") @@ -54,36 +54,34 @@ def run_command_in_directory(command, directory): def buildWeb(): interface_dir = Path("interface") pnpm_exe = get_pnpm_executable() - + # Set CI environment variable to make pnpm use silent mode os.environ['CI'] = 'true' - + print("Building web interface...") - + # Check if interface directory exists if not interface_dir.exists(): print(f"Error: Interface directory '{interface_dir}' not found!") return False - + # Check if pnpm is available if not shutil.which(pnpm_exe): print(f"Error: '{pnpm_exe}' not found in PATH!") return False - + try: # Run pnpm commands in the interface directory commands = [ f"{pnpm_exe} install", - f"{pnpm_exe} typesafe-i18n", - f"{pnpm_exe} build", - f"{pnpm_exe} webUI" + f"{pnpm_exe} build_webUI" ] - + for command in commands: print(f"Running: {command}") if not run_command_in_directory(command, interface_dir): return False - + # Modify i18n-util.ts file i18n_file = interface_dir / "src" / "i18n" / "i18n-util.ts" if i18n_file.exists(): @@ -93,11 +91,12 @@ def buildWeb(): w.write(text) print("Setting WebUI locale to 'en'") else: - print(f"Warning: {i18n_file} not found, skipping locale modification") - + print( + f"Warning: {i18n_file} not found, skipping locale modification") + print("Web interface build completed successfully!") return True - + except Exception as e: print(f"Error building web interface: {e}") return False @@ -108,8 +107,9 @@ def build_webUI(*args, **kwargs): if not success: print("Web interface build failed!") env.Exit(1) - env.Exit(0) - + env.Exit(0) + + # Create custom target that only runs the script and then exits, without continuing with the pio workflow env.AddCustomTarget( name="build", @@ -119,4 +119,3 @@ env.AddCustomTarget( description="installs pnpm packages, updates libraries and builds web UI", always_build=True ) - diff --git a/scripts/update_all.sh b/scripts/update_all.sh index b414f59b3..428301dac 100644 --- a/scripts/update_all.sh +++ b/scripts/update_all.sh @@ -20,7 +20,7 @@ pnpm format cd .. cd interface -pnpm webUI +pnpm build_webUI cd .. npx cspell "**"