diff --git a/pynecone/utils.py b/pynecone/utils.py index c83d3c612..75d1f248e 100644 --- a/pynecone/utils.py +++ b/pynecone/utils.py @@ -17,7 +17,6 @@ from collections import defaultdict from pathlib import Path from subprocess import DEVNULL, PIPE, STDOUT from types import ModuleType -from typing import _GenericAlias # type: ignore from typing import ( TYPE_CHECKING, Any, @@ -29,6 +28,7 @@ from typing import ( Type, Union, ) +from typing import _GenericAlias # type: ignore from urllib.parse import urlparse import psutil import plotly.graph_objects as go @@ -414,7 +414,11 @@ def initialize_web_directory(): def install_bun(): - """Install bun onto the user's system.""" + """Install bun onto the user's system. + + Raises: + FileNotFoundError: If the required packages are not installed. + """ # Bun is not supported on Windows. if platform.system() == "Windows": console.log("Skipping bun installation on Windows.") @@ -423,6 +427,17 @@ def install_bun(): # Only install if bun is not already installed. if not os.path.exists(get_package_manager()): console.log("Installing bun...") + + # Check if curl is installed + curl_path = which("curl") + if curl_path is None: + raise FileNotFoundError("Pynecone requires curl to be installed.") + + # Check if unzip is installed + unzip_path = which("unzip") + if unzip_path is None: + raise FileNotFoundError("Pynecone requires unzip to be installed.") + os.system(constants.INSTALL_BUN)