From 760f131d1caaf0539d480a3f7ec4a378178f9727 Mon Sep 17 00:00:00 2001 From: dw-0 Date: Sun, 9 Mar 2025 08:19:32 +0100 Subject: [PATCH] fix(klipper): handle file access exception for dietpi version file (#658) Signed-off-by: Dominik Willner --- kiauh/components/klipper/klipper_utils.py | 3 ++- kiauh/utils/fs_utils.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/kiauh/components/klipper/klipper_utils.py b/kiauh/components/klipper/klipper_utils.py index f4026e0..918d0f1 100644 --- a/kiauh/components/klipper/klipper_utils.py +++ b/kiauh/components/klipper/klipper_utils.py @@ -40,6 +40,7 @@ from core.submodules.simple_config_parser.src.simple_config_parser.simple_config ) from core.types.component_status import ComponentStatus from utils.common import check_install_dependencies, get_install_status +from utils.fs_utils import check_file_exist from utils.input_utils import get_confirm, get_number_input, get_string_input from utils.instance_utils import get_instances from utils.sys_utils import cmd_sysctl_service, parse_packages_from_file @@ -206,7 +207,7 @@ def install_klipper_packages() -> None: packages.append("pkg-config") # Add dbus requirement for DietPi distro - if Path("/boot/dietpi/.version").exists(): + if check_file_exist(Path("/boot/dietpi/.version")): packages.append("dbus") check_install_dependencies({*packages}) diff --git a/kiauh/utils/fs_utils.py b/kiauh/utils/fs_utils.py index 049afd6..cabdaf8 100644 --- a/kiauh/utils/fs_utils.py +++ b/kiauh/utils/fs_utils.py @@ -10,6 +10,7 @@ # ======================================================================= # from __future__ import annotations +import os import re import shutil from pathlib import Path @@ -29,15 +30,15 @@ def check_file_exist(file_path: Path, sudo=False) -> bool: :return: True, if file exists, otherwise False """ if sudo: + command = ["sudo", "find", file_path.as_posix()] try: - command = ["sudo", "find", file_path.as_posix()] check_output(command, stderr=DEVNULL) return True except CalledProcessError: return False else: - if file_path.exists(): - return True + if os.access(file_path, os.F_OK): + return file_path.exists() else: return False