From 13611ccd523f45f1c888aa68d165102ade698f22 Mon Sep 17 00:00:00 2001 From: dw-0 Date: Sun, 11 Aug 2024 12:54:27 +0200 Subject: [PATCH] refactor: check_install_dependencies expects a set now Signed-off-by: Dominik Willner --- kiauh/components/crowsnest/crowsnest.py | 4 ++-- kiauh/components/klipper/klipper_setup.py | 2 +- kiauh/components/klipperscreen/klipperscreen.py | 3 +-- kiauh/components/moonraker/moonraker_setup.py | 2 +- .../octoeverywhere/octoeverywhere_setup.py | 2 +- kiauh/components/webui_client/client_setup.py | 2 +- .../extensions/obico/moonraker_obico_extension.py | 2 +- .../pretty_gcode/pretty_gcode_extension.py | 2 +- .../moonraker_telegram_bot_extension.py | 2 +- kiauh/utils/common.py | 14 ++++++++++---- 10 files changed, 20 insertions(+), 15 deletions(-) diff --git a/kiauh/components/crowsnest/crowsnest.py b/kiauh/components/crowsnest/crowsnest.py index e2cb1a6..b954ede 100644 --- a/kiauh/components/crowsnest/crowsnest.py +++ b/kiauh/components/crowsnest/crowsnest.py @@ -52,7 +52,7 @@ def install_crowsnest() -> None: git_clone_wrapper(CROWSNEST_REPO, CROWSNEST_DIR, "master") # Step 2: Install dependencies - check_install_dependencies(["make"]) + check_install_dependencies({"make"}) # Step 3: Check for Multi Instance im = InstanceManager(Klipper) @@ -139,7 +139,7 @@ def update_crowsnest() -> None: git_pull_wrapper(CROWSNEST_REPO, CROWSNEST_DIR) deps = parse_packages_from_file(CROWSNEST_INSTALL_SCRIPT) - check_install_dependencies(deps) + check_install_dependencies({*deps}) cmd_sysctl_service(CROWSNEST_SERVICE_NAME, "restart") diff --git a/kiauh/components/klipper/klipper_setup.py b/kiauh/components/klipper/klipper_setup.py index ea4751a..9b3a29f 100644 --- a/kiauh/components/klipper/klipper_setup.py +++ b/kiauh/components/klipper/klipper_setup.py @@ -169,7 +169,7 @@ def install_klipper_packages() -> None: if Path("/boot/dietpi/.version").exists(): packages.append("dbus") - check_install_dependencies(packages) + check_install_dependencies({*packages}) def update_klipper() -> None: diff --git a/kiauh/components/klipperscreen/klipperscreen.py b/kiauh/components/klipperscreen/klipperscreen.py index aa7d5ac..067fcf9 100644 --- a/kiauh/components/klipperscreen/klipperscreen.py +++ b/kiauh/components/klipperscreen/klipperscreen.py @@ -78,8 +78,7 @@ def install_klipperscreen() -> None: ): return - package_list = ["git", "wget", "curl", "unzip", "dfu-util"] - check_install_dependencies(package_list) + check_install_dependencies() git_clone_wrapper(KLIPPERSCREEN_REPO, KLIPPERSCREEN_DIR) diff --git a/kiauh/components/moonraker/moonraker_setup.py b/kiauh/components/moonraker/moonraker_setup.py index 6a6fc4f..8817658 100644 --- a/kiauh/components/moonraker/moonraker_setup.py +++ b/kiauh/components/moonraker/moonraker_setup.py @@ -167,7 +167,7 @@ def install_moonraker_packages() -> None: if not moonraker_deps: raise ValueError("Error reading Moonraker dependencies!") - check_install_dependencies(moonraker_deps) + check_install_dependencies({*moonraker_deps}) def install_moonraker_polkit() -> None: diff --git a/kiauh/components/octoeverywhere/octoeverywhere_setup.py b/kiauh/components/octoeverywhere/octoeverywhere_setup.py index cfea41d..664b757 100644 --- a/kiauh/components/octoeverywhere/octoeverywhere_setup.py +++ b/kiauh/components/octoeverywhere/octoeverywhere_setup.py @@ -168,7 +168,7 @@ def install_oe_dependencies() -> None: if not oe_deps: raise ValueError("Error reading OctoEverywhere dependencies!") - check_install_dependencies(oe_deps) + check_install_dependencies({*oe_deps}) install_python_requirements(OE_ENV_DIR, OE_REQ_FILE) diff --git a/kiauh/components/webui_client/client_setup.py b/kiauh/components/webui_client/client_setup.py index 827f8e4..f9b5fee 100644 --- a/kiauh/components/webui_client/client_setup.py +++ b/kiauh/components/webui_client/client_setup.py @@ -112,7 +112,7 @@ def install_client(client: BaseWebClient) -> None: ) valid_port = is_valid_port(port, ports_in_use) - check_install_dependencies(["nginx"]) + check_install_dependencies({"nginx"}) try: download_client(client) diff --git a/kiauh/extensions/obico/moonraker_obico_extension.py b/kiauh/extensions/obico/moonraker_obico_extension.py index 34fe982..d5006fb 100644 --- a/kiauh/extensions/obico/moonraker_obico_extension.py +++ b/kiauh/extensions/obico/moonraker_obico_extension.py @@ -236,7 +236,7 @@ class ObicoExtension(BaseExtension): # install dependencies script = OBICO_DIR.joinpath("install.sh") package_list = parse_packages_from_file(script) - check_install_dependencies(package_list) + check_install_dependencies({*package_list}) # create virtualenv create_python_venv(OBICO_ENV_DIR) diff --git a/kiauh/extensions/pretty_gcode/pretty_gcode_extension.py b/kiauh/extensions/pretty_gcode/pretty_gcode_extension.py index 0a1c723..3dee4d6 100644 --- a/kiauh/extensions/pretty_gcode/pretty_gcode_extension.py +++ b/kiauh/extensions/pretty_gcode/pretty_gcode_extension.py @@ -48,7 +48,7 @@ class PrettyGcodeExtension(BaseExtension): allow_go_back=True, ) - check_install_dependencies(["nginx"]) + check_install_dependencies({"nginx"}) try: # remove any existing pgc dir diff --git a/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py b/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py index 030a82f..716a382 100644 --- a/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py +++ b/kiauh/extensions/telegram_bot/moonraker_telegram_bot_extension.py @@ -158,7 +158,7 @@ class TelegramBotExtension(BaseExtension): # install dependencies script = TG_BOT_DIR.joinpath("scripts/install.sh") package_list = parse_packages_from_file(script) - check_install_dependencies(package_list) + check_install_dependencies({*package_list}) # create virtualenv create_python_venv(TG_BOT_ENV) diff --git a/kiauh/utils/common.py b/kiauh/utils/common.py index d54a979..5686bf4 100644 --- a/kiauh/utils/common.py +++ b/kiauh/utils/common.py @@ -11,7 +11,7 @@ from __future__ import annotations import re from datetime import datetime from pathlib import Path -from typing import Dict, List, Literal, Optional, Type +from typing import Dict, List, Literal, Optional, Set, Type from components.klipper.klipper import Klipper from core.constants import ( @@ -47,17 +47,23 @@ def get_current_date() -> Dict[Literal["date", "time"], str]: return {"date": date, "time": time} -def check_install_dependencies(deps: List[str] | None = None) -> None: +def check_install_dependencies( + deps: Set[str] | None = None, include_global: bool = True +) -> None: """ Common helper method to check if dependencies are installed and if not, install them automatically | + :param include_global: Wether to include the global dependencies or not :param deps: List of strings of package names to check if installed :return: None """ if deps is None: - deps = [] + deps = set() - requirements = check_package_install({*GLOBAL_DEPS, *deps}) + if include_global: + deps.update(GLOBAL_DEPS) + + requirements = check_package_install(deps) if requirements: Logger.print_status("Installing dependencies ...") Logger.print_info("The following packages need installation:")