[REF-1586] [WiP] Use bun as a package manager on windows
Although bun support for windows is currently extremely limited/broken, eventually we want to migrate over to it for the installation speed gains over npm.
This commit is contained in:
parent
ef457afe11
commit
af7af376d0
@ -26,6 +26,8 @@ class Ext(SimpleNamespace):
|
||||
CSS = ".css"
|
||||
# The extension for zip files.
|
||||
ZIP = ".zip"
|
||||
# The extension for executable files on Windows.
|
||||
EXE = ".exe"
|
||||
|
||||
|
||||
class CompileVars(SimpleNamespace):
|
||||
|
@ -27,6 +27,15 @@ def set_log_level(log_level: LogLevel):
|
||||
_LOG_LEVEL = log_level
|
||||
|
||||
|
||||
def is_debug() -> bool:
|
||||
"""Check if the log level is debug.
|
||||
|
||||
Returns:
|
||||
True if the log level is debug.
|
||||
"""
|
||||
return _LOG_LEVEL <= LogLevel.DEBUG
|
||||
|
||||
|
||||
def print(msg: str, **kwargs):
|
||||
"""Print a message.
|
||||
|
||||
@ -44,7 +53,7 @@ def debug(msg: str, **kwargs):
|
||||
msg: The debug message.
|
||||
kwargs: Keyword arguments to pass to the print function.
|
||||
"""
|
||||
if _LOG_LEVEL <= LogLevel.DEBUG:
|
||||
if is_debug():
|
||||
msg_ = f"[blue]Debug: {msg}[/blue]"
|
||||
if progress := kwargs.pop("progress", None):
|
||||
progress.console.print(msg_, **kwargs)
|
||||
|
@ -145,16 +145,13 @@ def get_bun_version() -> version.Version | None:
|
||||
|
||||
def get_install_package_manager() -> str | None:
|
||||
"""Get the package manager executable for installation.
|
||||
Currently on unix systems, bun is used for installation only.
|
||||
Currently, bun is used for installation only.
|
||||
|
||||
Returns:
|
||||
The path to the package manager.
|
||||
"""
|
||||
# On Windows, we use npm instead of bun.
|
||||
if constants.IS_WINDOWS:
|
||||
return get_package_manager()
|
||||
|
||||
# On other platforms, we use bun.
|
||||
return get_config().bun_path + constants.Ext.EXE
|
||||
return get_config().bun_path
|
||||
|
||||
|
||||
@ -661,11 +658,6 @@ def install_bun():
|
||||
Raises:
|
||||
FileNotFoundError: If required packages are not found.
|
||||
"""
|
||||
# Bun is not supported on Windows.
|
||||
if constants.IS_WINDOWS:
|
||||
console.debug("Skipping bun installation on Windows.")
|
||||
return
|
||||
|
||||
# Skip if bun is already installed.
|
||||
if os.path.exists(get_config().bun_path) and get_bun_version() == version.parse(
|
||||
constants.Bun.VERSION
|
||||
@ -674,16 +666,25 @@ def install_bun():
|
||||
return
|
||||
|
||||
# if unzip is installed
|
||||
unzip_path = path_ops.which("unzip")
|
||||
if unzip_path is None:
|
||||
raise FileNotFoundError("Reflex requires unzip to be installed.")
|
||||
if constants.IS_WINDOWS:
|
||||
processes.new_process(
|
||||
["powershell", "-c", f"irm {constants.Bun.INSTALL_URL}.ps1|iex"],
|
||||
env={"BUN_INSTALL": constants.Bun.ROOT_PATH},
|
||||
shell=True,
|
||||
run=True,
|
||||
show_logs=console.is_debug(),
|
||||
)
|
||||
else:
|
||||
unzip_path = path_ops.which("unzip")
|
||||
if unzip_path is None:
|
||||
raise FileNotFoundError("Reflex requires unzip to be installed.")
|
||||
|
||||
# Run the bun install script.
|
||||
download_and_run(
|
||||
constants.Bun.INSTALL_URL,
|
||||
f"bun-v{constants.Bun.VERSION}",
|
||||
BUN_INSTALL=constants.Bun.ROOT_PATH,
|
||||
)
|
||||
# Run the bun install script.
|
||||
download_and_run(
|
||||
constants.Bun.INSTALL_URL,
|
||||
f"bun-v{constants.Bun.VERSION}",
|
||||
BUN_INSTALL=constants.Bun.ROOT_PATH,
|
||||
)
|
||||
|
||||
|
||||
def _write_cached_procedure_file(payload: str, cache_file: str):
|
||||
@ -880,9 +881,6 @@ def validate_frontend_dependencies(init=True):
|
||||
)
|
||||
raise typer.Exit(1)
|
||||
|
||||
if constants.IS_WINDOWS:
|
||||
return
|
||||
|
||||
if init:
|
||||
# we only need bun for package install on `reflex init`.
|
||||
validate_bun()
|
||||
|
Loading…
Reference in New Issue
Block a user