refactor(klipper): use name "klipper" for single instance setup

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2023-11-05 16:01:09 +01:00
parent fb09acf660
commit f9ecad0eca
4 changed files with 17 additions and 14 deletions

View File

@@ -39,9 +39,7 @@ class InstanceManager:
def set_current_instance(self, instance: BaseInstance) -> None: def set_current_instance(self, instance: BaseInstance) -> None:
self.current_instance = instance self.current_instance = instance
self.instance_name = ( self.instance_name = instance.name
f"{instance.prefix}-{instance.name}" if instance.name else instance.prefix
)
def create_instance(self) -> None: def create_instance(self) -> None:
if self.current_instance is not None: if self.current_instance is not None:
@@ -123,13 +121,16 @@ class InstanceManager:
def _find_instances(self) -> None: def _find_instances(self) -> None:
prefix = self.instance_type.__name__.lower() prefix = self.instance_type.__name__.lower()
pattern = re.compile(f"{prefix}(-[0-9a-zA-Z]+)?.service") single_pattern = re.compile(f"^{prefix}.service$")
multi_pattern = re.compile(f"^{prefix}(-[0-9a-zA-Z]+)?.service$")
excluded = self.instance_type.blacklist() excluded = self.instance_type.blacklist()
service_list = [ service_list = [
os.path.join(SYSTEMD, service) os.path.join(SYSTEMD, service)
for service in os.listdir(SYSTEMD) for service in os.listdir(SYSTEMD)
if pattern.search(service) and not any(s in service for s in excluded) if multi_pattern.search(service)
and not any(s in service for s in excluded)
or single_pattern.search(service)
] ]
instance_list = [ instance_list = [
@@ -141,10 +142,8 @@ class InstanceManager:
def _get_instance_name(self, file_path: Path) -> Union[str, None]: def _get_instance_name(self, file_path: Path) -> Union[str, None]:
full_name = str(file_path).split("/")[-1].split(".")[0] full_name = str(file_path).split("/")[-1].split(".")[0]
if full_name.isalnum():
return None
return full_name.split("-")[-1] return full_name.split("-")[-1] if "-" in full_name else full_name
def _sort_instance_list(self, s): def _sort_instance_list(self, s):
if s is None: if s is None:

View File

@@ -26,7 +26,7 @@ from kiauh.utils.system_utils import create_directory
class Klipper(BaseInstance): class Klipper(BaseInstance):
@classmethod @classmethod
def blacklist(cls) -> List[str]: def blacklist(cls) -> List[str]:
return ["None", "mcu"] return ["None", "klipper", "mcu"]
def __init__(self, name: str): def __init__(self, name: str):
super().__init__( super().__init__(
@@ -117,7 +117,7 @@ class Klipper(BaseInstance):
Logger.print_ok(f"Env file created: {env_file_target}") Logger.print_ok(f"Env file created: {env_file_target}")
def get_service_file_name(self, extension=False) -> str: def get_service_file_name(self, extension=False) -> str:
name = self.prefix if self.name is None else self.prefix + "-" + self.name name = "klipper" if self.name == self.prefix else self.prefix + "-" + self.name
return name if not extension else f"{name}.service" return name if not extension else f"{name}.service"
def _get_service_file_path(self): def _get_service_file_path(self):
@@ -138,7 +138,7 @@ class Klipper(BaseInstance):
Logger.print_ok("Directories successfully deleted.") Logger.print_ok("Directories successfully deleted.")
def _get_data_dir_from_name(self, name: str) -> str: def _get_data_dir_from_name(self, name: str) -> str:
if name is None: if name == "klipper":
return "printer" return "printer"
elif int(name.isdigit()): elif int(name.isdigit()):
return f"printer_{name}" return f"printer_{name}"

View File

@@ -185,10 +185,14 @@ def set_instance_names(instance_list, install_count: int) -> List[Union[str, Non
# new single instance install # new single instance install
if instance_count == 0 and install_count == 1: if instance_count == 0 and install_count == 1:
return [None] return ["klipper"]
# convert single instance install to multi install # convert single instance install to multi install
elif instance_count == 1 and instance_list[0].name is None and install_count >= 1: elif (
instance_count == 1
and instance_list[0].name == "klipper"
and install_count >= 1
):
return handle_convert_single_to_multi_instance_names(install_count) return handle_convert_single_to_multi_instance_names(install_count)
# new multi instance install # new multi instance install

View File

@@ -68,7 +68,7 @@ def get_string_input(question: str, exclude=Optional[List], default=None) -> str
while True: while True:
_input = input(format_question(question, default)).strip() _input = input(format_question(question, default)).strip()
if _input.isalnum() and _input not in exclude: if _input.isalnum() and _input.lower() not in exclude:
return _input return _input
Logger.print_error(INVALID_CHOICE) Logger.print_error(INVALID_CHOICE)