# -*- coding: utf-8 -*- # SPDX-FileCopyrightText: 2025 KUNBUS GmbH # SPDX-License-Identifier: GPL-2.0-or-later """Helper for dbus.""" from logging import getLogger log = getLogger(__name__) REVPI_DBUS_NAME = "com.revolutionpi.middleware1" REVPI_DBUS_BASE_PATH = "/com/revolutionpi/middleware1" class DbusInterface: def cleanup(self): """ Represents a method responsible for performing cleanup operations. This method is executed to properly release resources, close connections, or perform other necessary finalization tasks. This method does not take any arguments or return a value. """ pass def extend_interface(*args) -> str: """ Extends an interface name by appending additional segments to a pre-defined base name. This function takes multiple arguments, concatenates them with a predefined base interface name, and returns the resulting string, effectively constructing an extended interface name. Args: *args: str Components to be appended to the base interface name. Returns: str Fully constructed interface name by joining the base interface name with the provided segments. """ return ".".join([REVPI_DBUS_NAME, *args]) def grep(pattern, filename): """ Searches for lines in a file that contain a given pattern and returns them as a list. The function reads lines from the specified file and checks whether each line contains the provided pattern. It returns a list of lines that match the pattern. If the file is not found, an empty list is returned. Any other exceptions during the file reading process are caught and logged. Args: pattern (str): The substring to search for within the file's lines. filename (str): The path to the file that will be searched. Returns: list[str]: A list containing lines that include the provided pattern, with leading and trailing spaces removed. Raises: FileNotFoundError: This error is caught if the file specified is not found. Exception: Any unforeseen exception during file operations is caught and logged. """ try: with open(filename, "r") as file: # Gibt alle Zeilen zurück, die das Muster enthalten matching_lines = [line.strip() for line in file if pattern in line] return matching_lines except FileNotFoundError: return [] except Exception as e: log.error(f"Error reading file: {e}") return []