diff --git a/scripts/build-frontend.py b/scripts/build-frontend.py index 85e52b2..e61d5d5 100644 --- a/scripts/build-frontend.py +++ b/scripts/build-frontend.py @@ -11,17 +11,27 @@ class CustomBuildHook(BuildHookInterface): def initialize(self, version, build_data): super().initialize(version, build_data) stderr.write(">>> Building Cista frontend\n") - npm = shutil.which("npm") - if npm is None: - raise RuntimeError( - "NodeJS `npm` is required for building Cista but it was not found" - ) + npm = None + bun = shutil.which("bun") + if bun is None: + npm = shutil.which("npm") + if npm is None: + raise RuntimeError( + "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: - 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 + 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("..")