From 4c7d923b7d2057f2b063939cd1abd93afe97fea9 Mon Sep 17 00:00:00 2001 From: Francesco Ambrosini <45211144+HellAmbro@users.noreply.github.com> Date: Mon, 30 Jan 2023 21:13:54 +0100 Subject: [PATCH] Check if curl and unzip are installed (#386) --- pynecone/utils.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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)