diff --git a/kiauh/core/instance_manager/base_instance.py b/kiauh/core/instance_manager/base_instance.py index 2fdb188..9e8143f 100644 --- a/kiauh/core/instance_manager/base_instance.py +++ b/kiauh/core/instance_manager/base_instance.py @@ -14,6 +14,7 @@ from pathlib import Path from typing import List, Union, Optional, Type, TypeVar from kiauh.utils.constants import SYSTEMD, CURRENT_USER +from kiauh.utils.system_utils import create_directory B = TypeVar(name="B", bound="BaseInstance", covariant=True) @@ -37,6 +38,7 @@ class BaseInstance(ABC): self._log_dir = f"{self.data_dir}/logs" self._comms_dir = f"{self.data_dir}/comms" self._sysd_dir = f"{self.data_dir}/systemd" + self._gcodes_dir = f"{self.data_dir}/gcodes" @property def instance_type(self) -> Type["BaseInstance"]: @@ -110,6 +112,14 @@ class BaseInstance(ABC): def sysd_dir(self, value: str): self._sysd_dir = value + @property + def gcodes_dir(self): + return self._gcodes_dir + + @gcodes_dir.setter + def gcodes_dir(self, value: str): + self._gcodes_dir = value + @abstractmethod def create(self) -> None: raise NotImplementedError("Subclasses must implement the create method") @@ -118,6 +128,21 @@ class BaseInstance(ABC): def delete(self, del_remnants: bool) -> None: raise NotImplementedError("Subclasses must implement the delete method") + def create_folders(self, add_dirs: List[str] = None) -> None: + dirs = [ + self.data_dir, + self.cfg_dir, + self.log_dir, + self.comms_dir, + self.sysd_dir, + ] + + if add_dirs: + dirs.extend(add_dirs) + + for _dir in dirs: + create_directory(Path(_dir)) + def get_service_file_name(self, extension: bool = False) -> str: name = f"{self.__class__.__name__.lower()}" if self.suffix is not None: diff --git a/kiauh/modules/klipper/klipper.py b/kiauh/modules/klipper/klipper.py index e4aa570..636d173 100644 --- a/kiauh/modules/klipper/klipper.py +++ b/kiauh/modules/klipper/klipper.py @@ -19,7 +19,6 @@ from kiauh.core.instance_manager.base_instance import BaseInstance from kiauh.modules.klipper import KLIPPER_DIR, KLIPPER_ENV_DIR from kiauh.utils.constants import SYSTEMD from kiauh.utils.logger import Logger -from kiauh.utils.system_utils import create_directory # noinspection PyMethodMayBeStatic @@ -47,7 +46,7 @@ class Klipper(BaseInstance): env_file_target = os.path.abspath(f"{self.sysd_dir}/klipper.env") try: - self.create_folder_structure() + self.create_folders() self.write_service_file( service_template_path, service_file_target, env_file_target ) @@ -79,17 +78,6 @@ class Klipper(BaseInstance): if del_remnants: self._delete_klipper_remnants() - def create_folder_structure(self) -> None: - dirs = [ - self.data_dir, - self.cfg_dir, - self.log_dir, - self.comms_dir, - self.sysd_dir, - ] - for _dir in dirs: - create_directory(Path(_dir)) - def write_service_file( self, service_template_path: str, service_file_target: str, env_file_target: str ):