from __future__ import annotations from pathlib import Path from app.core.command_runner import CommandRunner class DebInstaller: def __init__(self, command_runner: CommandRunner) -> None: self.command_runner = command_runner def install_deb(self, file_path: Path) -> None: self.command_runner.run(["apt", "install", "-y", str(file_path)]) def remove_package(self, package_name: str, purge: bool = False) -> None: action = "purge" if purge else "remove" self.command_runner.run(["apt", action, "-y", package_name]) def get_package_version(self, package_name: str) -> str | None: result = self.command_runner.run(["dpkg-query", "-W", "-f=${Version}", package_name]) version = result.stdout.strip() return version or None def check_package_installed(self, package_name: str) -> bool: try: self.get_package_version(package_name) return True except Exception: return False