refactor: implement Mobileraker and OctoEverywhere as community extensions (#532)

* refactor: move mobileraker to extensions

Signed-off-by: Dominik Willner <th33xitus@gmail.com>

* refactor: move octoeverywhere to extensions

Signed-off-by: Dominik Willner <th33xitus@gmail.com>

---------

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2024-09-20 12:05:29 +02:00
committed by GitHub
parent 29b5ab00cd
commit 7e87f8af32
23 changed files with 445 additions and 486 deletions

View File

@@ -12,8 +12,8 @@ from pathlib import Path
from subprocess import CalledProcessError
from typing import List
from core.instance_type import InstanceType
from core.logger import Logger
from utils.instance_type import InstanceType
from utils.sys_utils import cmd_sysctl_service

View File

@@ -1,25 +0,0 @@
# ======================================================================= #
# Copyright (C) 2020 - 2024 Dominik Willner <th33xitus@gmail.com> #
# #
# This file is part of KIAUH - Klipper Installation And Update Helper #
# https://github.com/dw-0/kiauh #
# #
# This file may be distributed under the terms of the GNU GPLv3 license #
# ======================================================================= #
from typing import TypeVar
from components.klipper.klipper import Klipper
from components.moonraker.moonraker import Moonraker
from components.octoeverywhere.octoeverywhere import Octoeverywhere
from extensions.obico.moonraker_obico import MoonrakerObico
from extensions.telegram_bot.moonraker_telegram_bot import MoonrakerTelegramBot
InstanceType = TypeVar(
"InstanceType",
Klipper,
Moonraker,
MoonrakerTelegramBot,
MoonrakerObico,
Octoeverywhere,
)

View File

@@ -14,9 +14,7 @@ from typing import Type
from components.crowsnest.crowsnest import install_crowsnest
from components.klipper import klipper_setup
from components.klipperscreen.klipperscreen import install_klipperscreen
from components.mobileraker.mobileraker import install_mobileraker
from components.moonraker import moonraker_setup
from components.octoeverywhere.octoeverywhere_setup import install_octoeverywhere
from components.webui_client import client_setup
from components.webui_client.client_config import client_config_setup
from components.webui_client.fluidd_data import FluiddData
@@ -47,9 +45,7 @@ class InstallMenu(BaseMenu):
"5": Option(method=self.install_mainsail_config),
"6": Option(method=self.install_fluidd_config),
"7": Option(method=self.install_klipperscreen),
"8": Option(method=self.install_mobileraker),
"9": Option(method=self.install_crowsnest),
"10": Option(method=self.install_octoeverywhere),
"8": Option(method=self.install_crowsnest),
}
def print_menu(self) -> None:
@@ -64,15 +60,14 @@ class InstallMenu(BaseMenu):
║ Firmware & API: │ Touchscreen GUI: ║
║ 1) [Klipper] │ 7) [KlipperScreen] ║
║ 2) [Moonraker] │ ║
║ │ Android / iOS:
║ Webinterface: │ 8) [Mobileraker]
║ │ Webcam Streamer:
║ Webinterface: │ 8) [Crowsnest]
║ 3) [Mainsail] │ ║
║ 4) [Fluidd] │ Webcam Streamer:
║ │ 9) [Crowsnest] ║
║ Client-Config: │ ║
║ 5) [Mainsail-Config] │ Remote Access: ║
║ 6) [Fluidd-Config] │ 10) [OctoEverywhere] ║
║ 4) [Fluidd] │
║ │ ║
║ Client-Config: │ ║
║ 5) [Mainsail-Config] │ ║
║ 6) [Fluidd-Config] │ ║
╟───────────────────────────┴───────────────────────────╢
"""
)[1:]
@@ -99,11 +94,5 @@ class InstallMenu(BaseMenu):
def install_klipperscreen(self, **kwargs) -> None:
install_klipperscreen()
def install_mobileraker(self, **kwargs) -> None:
install_mobileraker()
def install_crowsnest(self, **kwargs) -> None:
install_crowsnest()
def install_octoeverywhere(self, **kwargs) -> None:
install_octoeverywhere()

View File

@@ -16,9 +16,7 @@ from components.crowsnest.crowsnest import get_crowsnest_status
from components.klipper.klipper_utils import get_klipper_status
from components.klipperscreen.klipperscreen import get_klipperscreen_status
from components.log_uploads.menus.log_upload_menu import LogUploadMenu
from components.mobileraker.mobileraker import get_mobileraker_status
from components.moonraker.moonraker_utils import get_moonraker_status
from components.octoeverywhere.octoeverywhere_setup import get_octoeverywhere_status
from components.webui_client.client_utils import (
get_client_status,
get_current_client_config,
@@ -59,8 +57,8 @@ class MainMenu(BaseMenu):
self.version = ""
self.kl_status = self.kl_owner = self.kl_repo = ""
self.mr_status = self.mr_owner = self.mr_repo = ""
self.ms_status = self.fl_status = self.ks_status = self.mb_status = ""
self.cn_status = self.cc_status = self.oe_status = ""
self.ms_status = self.fl_status = self.ks_status = ""
self.cn_status = self.cc_status = ""
self._init_status()
def set_previous_menu(self, previous_menu: Type[BaseMenu] | None) -> None:
@@ -80,7 +78,7 @@ class MainMenu(BaseMenu):
}
def _init_status(self) -> None:
status_vars = ["kl", "mr", "ms", "fl", "ks", "mb", "cn", "oe"]
status_vars = ["kl", "mr", "ms", "fl", "ks", "cn"]
for var in status_vars:
setattr(
self,
@@ -96,9 +94,7 @@ class MainMenu(BaseMenu):
self._get_component_status("fl", get_client_status, FluiddData())
self.cc_status = get_current_client_config([MainsailData(), FluiddData()])
self._get_component_status("ks", get_klipperscreen_status)
self._get_component_status("mb", get_mobileraker_status)
self._get_component_status("cn", get_crowsnest_status)
self._get_component_status("oe", get_octoeverywhere_status)
def _get_component_status(self, name: str, status_fn: Callable, *args) -> None:
status_data: ComponentStatus = status_fn(*args)
@@ -155,8 +151,6 @@ class MainMenu(BaseMenu):
║ Community: │ Client-Config: {self.cc_status:<{pad2}}
║ E) [Extensions] │ ║
║ │ KlipperScreen: {self.ks_status:<{pad2}}
║ │ Mobileraker: {self.mb_status:<{pad2}}
║ │ OctoEverywhere: {self.oe_status:<{pad2}}
║ │ Crowsnest: {self.cn_status:<{pad2}}
╟──────────────────┼────────────────────────────────────╢
{footer1:^25}{footer2:^43}

View File

@@ -14,11 +14,9 @@ from typing import Type
from components.crowsnest.crowsnest import remove_crowsnest
from components.klipper.menus.klipper_remove_menu import KlipperRemoveMenu
from components.klipperscreen.klipperscreen import remove_klipperscreen
from components.mobileraker.mobileraker import remove_mobileraker
from components.moonraker.menus.moonraker_remove_menu import (
MoonrakerRemoveMenu,
)
from components.octoeverywhere.octoeverywhere_setup import remove_octoeverywhere
from components.webui_client.fluidd_data import FluiddData
from components.webui_client.mainsail_data import MainsailData
from components.webui_client.menus.client_remove_menu import ClientRemoveMenu
@@ -46,9 +44,8 @@ class RemoveMenu(BaseMenu):
"3": Option(method=self.remove_mainsail),
"4": Option(method=self.remove_fluidd),
"5": Option(method=self.remove_klipperscreen),
"6": Option(method=self.remove_mobileraker),
"7": Option(method=self.remove_crowsnest),
"8": Option(method=self.remove_octoeverywhere),
"6": Option(method=self.remove_crowsnest),
"7": Option(method=self.remove_octoeverywhere),
}
def print_menu(self) -> None:
@@ -62,16 +59,13 @@ class RemoveMenu(BaseMenu):
╟───────────────────────────────────────────────────────╢
║ INFO: Configurations and/or any backups will be kept! ║
╟───────────────────────────┬───────────────────────────╢
║ Firmware & API: │ Android / iOS:
║ 1) [Klipper] │ 6) [Mobileraker]
║ Firmware & API: │ Touchscreen GUI:
║ 1) [Klipper] │ 5) [KlipperScreen]
║ 2) [Moonraker] │ ║
║ │ Webcam Streamer: ║
║ Klipper Webinterface: │ 7) [Crowsnest] ║
║ Klipper Webinterface: │ 6) [Crowsnest] ║
║ 3) [Mainsail] │ ║
║ 4) [Fluidd] │ Remote Access:
║ │ 8) [OctoEverywhere] ║
║ Touchscreen GUI: │ ║
║ 5) [KlipperScreen] │ ║
║ 4) [Fluidd] │
╟───────────────────────────┴───────────────────────────╢
"""
)[1:]
@@ -92,11 +86,5 @@ class RemoveMenu(BaseMenu):
def remove_klipperscreen(self, **kwargs) -> None:
remove_klipperscreen()
def remove_mobileraker(self, **kwargs) -> None:
remove_mobileraker()
def remove_crowsnest(self, **kwargs) -> None:
remove_crowsnest()
def remove_octoeverywhere(self, **kwargs) -> None:
remove_octoeverywhere()

View File

@@ -20,16 +20,8 @@ from components.klipperscreen.klipperscreen import (
get_klipperscreen_status,
update_klipperscreen,
)
from components.mobileraker.mobileraker import (
get_mobileraker_status,
update_mobileraker,
)
from components.moonraker.moonraker_setup import update_moonraker
from components.moonraker.moonraker_utils import get_moonraker_status
from components.octoeverywhere.octoeverywhere_setup import (
get_octoeverywhere_status,
update_octoeverywhere,
)
from components.webui_client.client_config.client_config_setup import (
update_client_config,
)
@@ -76,9 +68,7 @@ class UpdateMenu(BaseMenu):
self.fluidd_local = self.fluidd_remote = ""
self.fluidd_config_local = self.fluidd_config_remote = ""
self.klipperscreen_local = self.klipperscreen_remote = ""
self.mobileraker_local = self.mobileraker_remote = ""
self.crowsnest_local = self.crowsnest_remote = ""
self.octoeverywhere_local = self.octoeverywhere_remote = ""
self.mainsail_data = MainsailData()
self.fluidd_data = FluiddData()
@@ -89,10 +79,8 @@ class UpdateMenu(BaseMenu):
"mainsail_config": {"installed": False, "local": None, "remote": None},
"fluidd": {"installed": False, "local": None, "remote": None},
"fluidd_config": {"installed": False, "local": None, "remote": None},
"mobileraker": {"installed": False, "local": None, "remote": None},
"klipperscreen": {"installed": False, "local": None, "remote": None},
"crowsnest": {"installed": False, "local": None, "remote": None},
"octoeverywhere": {"installed": False, "local": None, "remote": None},
}
def set_previous_menu(self, previous_menu: Type[BaseMenu] | None) -> None:
@@ -110,10 +98,8 @@ class UpdateMenu(BaseMenu):
"5": Option(self.update_mainsail_config),
"6": Option(self.update_fluidd_config),
"7": Option(self.update_klipperscreen),
"8": Option(self.update_mobileraker),
"9": Option(self.update_crowsnest),
"10": Option(self.update_octoeverywhere),
"11": Option(self.upgrade_system_packages),
"8": Option(self.update_crowsnest),
"9": Option(self.upgrade_system_packages),
}
def print_menu(self) -> None:
@@ -157,11 +143,9 @@ class UpdateMenu(BaseMenu):
║ │ │ ║
║ Other: ├───────────────┼───────────────╢
║ 7) KlipperScreen │ {self.klipperscreen_local:<22}{self.klipperscreen_remote:<22}
║ 8) Mobileraker{self.mobileraker_local:<22}{self.mobileraker_remote:<22}
║ 9) Crowsnest │ {self.crowsnest_local:<22}{self.crowsnest_remote:<22}
║ 10) OctoEverywhere │ {self.octoeverywhere_local:<22}{self.octoeverywhere_remote:<22}
║ 8) Crowsnest {self.crowsnest_local:<22}{self.crowsnest_remote:<22}
║ ├───────────────┴───────────────╢
11) System │ {sysupgrades:^{padding}}
9) System │ {sysupgrades:^{padding}}
╟───────────────────────┴───────────────────────────────╢
"""
)[1:]
@@ -198,18 +182,10 @@ class UpdateMenu(BaseMenu):
if self._check_is_installed("klipperscreen"):
update_klipperscreen()
def update_mobileraker(self, **kwargs) -> None:
if self._check_is_installed("mobileraker"):
update_mobileraker()
def update_crowsnest(self, **kwargs) -> None:
if self._check_is_installed("crowsnest"):
update_crowsnest()
def update_octoeverywhere(self, **kwargs) -> None:
if self._check_is_installed("octoeverywhere"):
update_octoeverywhere()
def upgrade_system_packages(self, **kwargs) -> None:
self._run_system_updates()
@@ -225,9 +201,7 @@ class UpdateMenu(BaseMenu):
"fluidd_config", get_client_config_status, self.fluidd_data
)
self._set_status_data("klipperscreen", get_klipperscreen_status)
self._set_status_data("mobileraker", get_mobileraker_status)
self._set_status_data("crowsnest", get_crowsnest_status)
self._set_status_data("octoeverywhere", get_octoeverywhere_status)
update_system_package_lists(silent=True)
self.packages = get_upgradable_packages()