From 7632c3c98051f55321864bda7acf48f6325461fb Mon Sep 17 00:00:00 2001 From: dw-0 Date: Sun, 30 Jun 2024 21:29:54 +0200 Subject: [PATCH] refactor: implement constants for klipper use ubuntu 22.04 install script Signed-off-by: Dominik Willner --- kiauh/components/klipper/__init__.py | 15 ++++++++++- kiauh/components/klipper/klipper.py | 33 ++++++++++++++--------- kiauh/components/klipper/klipper_setup.py | 21 +++++++-------- 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/kiauh/components/klipper/__init__.py b/kiauh/components/klipper/__init__.py index f1a1a24..2e282e4 100644 --- a/kiauh/components/klipper/__init__.py +++ b/kiauh/components/klipper/__init__.py @@ -15,9 +15,22 @@ MODULE_PATH = Path(__file__).resolve().parent # names KLIPPER_LOG_NAME = "klippy.log" +KLIPPER_CFG_NAME = "printer.cfg" +KLIPPER_SERIAL_NAME = "klippy.serial" +KLIPPER_UDS_NAME = "klippy.sock" +KLIPPER_ENV_FILE_NAME = "klipper.env" +KLIPPER_SERVICE_NAME = "klipper.service" + +# directories KLIPPER_DIR = Path.home().joinpath("klipper") KLIPPER_ENV_DIR = Path.home().joinpath("klippy-env") KLIPPER_BACKUP_DIR = BACKUP_ROOT_DIR.joinpath("klipper-backups") -KLIPPER_REQUIREMENTS_TXT = KLIPPER_DIR.joinpath("scripts/klippy-requirements.txt") + +# files +KLIPPER_REQ_FILE = KLIPPER_DIR.joinpath("scripts/klippy-requirements.txt") +KLIPPER_INSTALL_SCRIPT = KLIPPER_DIR.joinpath("scripts/install-ubuntu-22.04.sh") +KLIPPER_SERVICE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{KLIPPER_SERVICE_NAME}") +KLIPPER_ENV_FILE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{KLIPPER_ENV_FILE_NAME}") + EXIT_KLIPPER_SETUP = "Exiting Klipper setup ..." diff --git a/kiauh/components/klipper/klipper.py b/kiauh/components/klipper/klipper.py index f6e04db..993bfb4 100644 --- a/kiauh/components/klipper/klipper.py +++ b/kiauh/components/klipper/klipper.py @@ -11,7 +11,17 @@ from pathlib import Path from subprocess import DEVNULL, CalledProcessError, run from typing import List -from components.klipper import KLIPPER_DIR, KLIPPER_ENV_DIR, MODULE_PATH +from components.klipper import ( + KLIPPER_CFG_NAME, + KLIPPER_DIR, + KLIPPER_ENV_DIR, + KLIPPER_ENV_FILE_NAME, + KLIPPER_ENV_FILE_TEMPLATE, + KLIPPER_LOG_NAME, + KLIPPER_SERIAL_NAME, + KLIPPER_SERVICE_TEMPLATE, + KLIPPER_UDS_NAME, +) from core.instance_manager.base_instance import BaseInstance from utils.constants import SYSTEMD from utils.logger import Logger @@ -27,10 +37,10 @@ class Klipper(BaseInstance): super().__init__(instance_type=self, suffix=suffix) self.klipper_dir: Path = KLIPPER_DIR self.env_dir: Path = KLIPPER_ENV_DIR - self._cfg_file = self.cfg_dir.joinpath("printer.cfg") - self._log = self.log_dir.joinpath("klippy.log") - self._serial = self.comms_dir.joinpath("klippy.serial") - self._uds = self.comms_dir.joinpath("klippy.sock") + self._cfg_file = self.cfg_dir.joinpath(KLIPPER_CFG_NAME) + self._log = self.log_dir.joinpath(KLIPPER_LOG_NAME) + self._serial = self.comms_dir.joinpath(KLIPPER_SERIAL_NAME) + self._uds = self.comms_dir.joinpath(KLIPPER_UDS_NAME) @property def cfg_file(self) -> Path: @@ -51,21 +61,18 @@ class Klipper(BaseInstance): def create(self) -> None: Logger.print_status("Creating new Klipper Instance ...") - service_template_path = MODULE_PATH.joinpath("assets/klipper.service") service_file_name = self.get_service_file_name(extension=True) service_file_target = SYSTEMD.joinpath(service_file_name) - - env_template_file_path = MODULE_PATH.joinpath("assets/klipper.env") - env_file_target = self.sysd_dir.joinpath("klipper.env") + env_file_target = self.sysd_dir.joinpath(KLIPPER_ENV_FILE_NAME) try: self.create_folders() self._write_service_file( - service_template_path, + KLIPPER_SERVICE_TEMPLATE, service_file_target, env_file_target, ) - self._write_env_file(env_template_file_path, env_file_target) + self._write_env_file(KLIPPER_ENV_FILE_TEMPLATE, env_file_target) except CalledProcessError as e: Logger.print_error(f"Error creating instance: {e}") @@ -147,7 +154,8 @@ class Klipper(BaseInstance): "%KLIPPER_DIR%", str(self.klipper_dir) ) env_file_content = env_file_content.replace( - "%CFG%", f"{self.cfg_dir}/printer.cfg" + "%CFG%", + f"{self.cfg_dir}/{KLIPPER_CFG_NAME}", ) env_file_content = env_file_content.replace("%SERIAL%", str(self.serial)) env_file_content = env_file_content.replace("%LOG%", str(self.log)) @@ -157,7 +165,6 @@ class Klipper(BaseInstance): def _delete_logfiles(self) -> None: from utils.fs_utils import run_remove_routines - for log in list(self.log_dir.glob("klippy.log*")): files = self.log_dir.iterdir() logs = [f for f in files if f.name.startswith(KLIPPER_LOG_NAME)] for log in logs: diff --git a/kiauh/components/klipper/klipper_setup.py b/kiauh/components/klipper/klipper_setup.py index 85d7469..f085d7c 100644 --- a/kiauh/components/klipper/klipper_setup.py +++ b/kiauh/components/klipper/klipper_setup.py @@ -13,7 +13,8 @@ from components.klipper import ( EXIT_KLIPPER_SETUP, KLIPPER_DIR, KLIPPER_ENV_DIR, - KLIPPER_REQUIREMENTS_TXT, + KLIPPER_INSTALL_SCRIPT, + KLIPPER_REQ_FILE, ) from components.klipper.klipper import Klipper from components.klipper.klipper_utils import ( @@ -115,21 +116,19 @@ def setup_klipper_prerequesites() -> None: # install klipper dependencies and create python virtualenv try: - install_klipper_packages(KLIPPER_DIR) + install_klipper_packages() create_python_venv(KLIPPER_ENV_DIR) - install_python_requirements(KLIPPER_ENV_DIR, KLIPPER_REQUIREMENTS_TXT) + install_python_requirements(KLIPPER_ENV_DIR, KLIPPER_REQ_FILE) except Exception: Logger.print_error("Error during installation of Klipper requirements!") raise -def install_klipper_packages(klipper_dir: Path) -> None: - script = klipper_dir.joinpath("scripts/install-debian.sh") +def install_klipper_packages() -> None: + script = KLIPPER_INSTALL_SCRIPT packages = parse_packages_from_file(script) - packages = [pkg.replace("python-dev", "python3-dev") for pkg in packages] - packages.append("python3-venv") - # Add dfu-util for octopi-images - packages.append("dfu-util") + packages.append("python3-venv") # todo: remove once switched to virtualenv + # Add dbus requirement for DietPi distro if Path("/boot/dietpi/.version").exists(): packages.append("dbus") @@ -160,9 +159,9 @@ def update_klipper() -> None: git_pull_wrapper(repo=settings.klipper.repo_url, target_dir=KLIPPER_DIR) # install possible new system packages - install_klipper_packages(KLIPPER_DIR) + install_klipper_packages() # install possible new python dependencies - install_python_requirements(KLIPPER_ENV_DIR, KLIPPER_REQUIREMENTS_TXT) + install_python_requirements(KLIPPER_ENV_DIR, KLIPPER_REQ_FILE) instance_manager.start_all_instance()