Use Fallback command on all platforms (#3099)
* Use Fallback command on all platforms * precommit fix * obtain the loglevel cmd for fallback as well * address PR comment
This commit is contained in:
parent
c567334c92
commit
7b61e7e4bc
@ -821,14 +821,16 @@ def install_frontend_packages(packages: set[str], config: Config):
|
||||
Example:
|
||||
>>> install_frontend_packages(["react", "react-dom"], get_config())
|
||||
"""
|
||||
# unsupported archs will use npm anyway. so we dont have to run npm twice
|
||||
# unsupported archs(arm and 32bit machines) will use npm anyway. so we dont have to run npm twice
|
||||
fallback_command = (
|
||||
get_package_manager()
|
||||
if constants.IS_WINDOWS and constants.IS_WINDOWS_BUN_SUPPORTED_MACHINE
|
||||
get_install_package_manager()
|
||||
if not constants.IS_WINDOWS
|
||||
or constants.IS_WINDOWS
|
||||
and constants.IS_WINDOWS_BUN_SUPPORTED_MACHINE
|
||||
else None
|
||||
)
|
||||
processes.run_process_with_fallback(
|
||||
[get_install_package_manager(), "install", "--loglevel", "silly"],
|
||||
[get_install_package_manager(), "install"], # type: ignore
|
||||
fallback=fallback_command,
|
||||
show_status_message="Installing base frontend packages",
|
||||
cwd=constants.Dirs.WEB,
|
||||
|
@ -8,6 +8,7 @@ import os
|
||||
import signal
|
||||
import subprocess
|
||||
from concurrent import futures
|
||||
from pathlib import Path
|
||||
from typing import Callable, Generator, List, Optional, Tuple, Union
|
||||
|
||||
import psutil
|
||||
@ -297,6 +298,25 @@ def atexit_handler():
|
||||
console.log("Reflex app stopped.")
|
||||
|
||||
|
||||
def get_command_with_loglevel(command: list[str]) -> list[str]:
|
||||
"""Add the right loglevel flag to the designated command.
|
||||
npm uses --loglevel <level>, Bun doesnt use the --loglevel flag and
|
||||
runs in debug mode by default.
|
||||
|
||||
Args:
|
||||
command:The command to add loglevel flag.
|
||||
|
||||
Returns:
|
||||
The updated command list
|
||||
"""
|
||||
npm_path = path_ops.get_npm_path()
|
||||
npm_path = str(Path(npm_path).resolve()) if npm_path else npm_path
|
||||
|
||||
if command[0] == npm_path:
|
||||
return command + ["--loglevel", "silly"]
|
||||
return command
|
||||
|
||||
|
||||
def run_process_with_fallback(args, *, show_status_message, fallback=None, **kwargs):
|
||||
"""Run subprocess and retry using fallback command if initial command fails.
|
||||
|
||||
@ -306,7 +326,7 @@ def run_process_with_fallback(args, *, show_status_message, fallback=None, **kwa
|
||||
fallback: The fallback command to run.
|
||||
kwargs: Kwargs to pass to new_process function.
|
||||
"""
|
||||
process = new_process(args, **kwargs)
|
||||
process = new_process(get_command_with_loglevel(args), **kwargs)
|
||||
if fallback is None:
|
||||
# No fallback given, or this _is_ the fallback command.
|
||||
show_status(show_status_message, process)
|
||||
|
Loading…
Reference in New Issue
Block a user