fix(Mainsail): implement missing mainsail cfg symlinking

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2023-12-22 21:41:15 +01:00
parent 12bd8eb799
commit 22e8e314db
2 changed files with 48 additions and 10 deletions

View File

@@ -10,6 +10,7 @@
# ======================================================================= # # ======================================================================= #
import os.path import os.path
import subprocess
from pathlib import Path from pathlib import Path
from typing import List from typing import List
@@ -24,23 +25,30 @@ from kiauh.modules.mainsail import (
MAINSAIL_CONFIG_DIR, MAINSAIL_CONFIG_DIR,
MAINSAIL_CONFIG_REPO_URL, MAINSAIL_CONFIG_REPO_URL,
MODULE_PATH, MODULE_PATH,
) )
from kiauh.modules.mainsail.mainsail_dialogs import ( from kiauh.modules.mainsail.mainsail_dialogs import (
print_moonraker_not_found_dialog, print_moonraker_not_found_dialog,
print_mainsail_already_installed_dialog, print_mainsail_already_installed_dialog,
print_install_mainsail_config_dialog, print_install_mainsail_config_dialog,
print_mainsail_port_select_dialog, print_mainsail_port_select_dialog,
) )
from kiauh.modules.mainsail.mainsail_utils import ( from kiauh.modules.mainsail.mainsail_utils import (
restore_config_json, restore_config_json,
enable_mainsail_remotemode, enable_mainsail_remotemode,
backup_config_json, backup_config_json,
symlink_webui_nginx_log, symlink_webui_nginx_log,
) )
from kiauh.modules.moonraker.moonraker import Moonraker from kiauh.modules.moonraker.moonraker import Moonraker
from kiauh.utils.common import check_install_dependencies from kiauh.utils.common import check_install_dependencies
from kiauh.utils.filesystem_utils import unzip, create_upstream_nginx_cfg, create_common_vars_nginx_cfg, \ from kiauh.utils.filesystem_utils import (
delete_default_nginx_cfg, create_nginx_cfg, enable_nginx_cfg unzip,
create_upstream_nginx_cfg,
create_common_vars_nginx_cfg,
delete_default_nginx_cfg,
create_nginx_cfg,
enable_nginx_cfg,
create_symlink,
)
from kiauh.utils.input_utils import get_confirm, get_number_input from kiauh.utils.input_utils import get_confirm, get_number_input
from kiauh.utils.logger import Logger from kiauh.utils.logger import Logger
from kiauh.utils.system_utils import ( from kiauh.utils.system_utils import (
@@ -48,7 +56,7 @@ from kiauh.utils.system_utils import (
set_nginx_permissions, set_nginx_permissions,
get_ipv4_addr, get_ipv4_addr,
control_systemd_service, control_systemd_service,
) )
def run_mainsail_installation() -> None: def run_mainsail_installation() -> None:
@@ -110,8 +118,9 @@ def run_mainsail_installation() -> None:
"mainsail-updater.conf", "mainsail-updater.conf",
) )
im_mr.restart_all_instance() im_mr.restart_all_instance()
if is_klipper_installed and install_ms_config: if install_ms_config and is_klipper_installed:
download_mainsail_config() download_mainsail_cfg()
create_mainsail_cfg_symlink(im_kl.instances)
patch_moonraker_conf( patch_moonraker_conf(
im_mr.instances, im_mr.instances,
"mainsail-config", "mainsail-config",
@@ -152,7 +161,7 @@ def download_mainsail() -> None:
raise raise
def download_mainsail_config() -> None: def download_mainsail_cfg() -> None:
try: try:
Logger.print_status("Downloading mainsail-config ...") Logger.print_status("Downloading mainsail-config ...")
rm = RepoManager(MAINSAIL_CONFIG_REPO_URL, target_dir=MAINSAIL_CONFIG_DIR) rm = RepoManager(MAINSAIL_CONFIG_REPO_URL, target_dir=MAINSAIL_CONFIG_DIR)
@@ -162,6 +171,18 @@ def download_mainsail_config() -> None:
raise raise
def create_mainsail_cfg_symlink(klipper_instances: List[Klipper]) -> None:
Logger.print_status("Create symlink of mainsail.cfg ...")
source = Path(MAINSAIL_CONFIG_DIR, "mainsail.cfg")
for instance in klipper_instances:
target = instance.cfg_dir
Logger.print_status(f"Linking {source} to {target}")
try:
create_symlink(source, target)
except subprocess.CalledProcessError:
Logger.print_error("Creating symlink failed!")
def create_mainsail_nginx_cfg(port: int) -> None: def create_mainsail_nginx_cfg(port: int) -> None:
try: try:
Logger.print_status("Creating NGINX config for Mainsail ...") Logger.print_status("Creating NGINX config for Mainsail ...")

View File

@@ -14,7 +14,12 @@ import subprocess
from pathlib import Path from pathlib import Path
from zipfile import ZipFile from zipfile import ZipFile
from kiauh.utils import NGINX_SITES_AVAILABLE, NGINX_SITES_ENABLED, MODULE_PATH, NGINX_CONFD from kiauh.utils import (
NGINX_SITES_AVAILABLE,
NGINX_SITES_ENABLED,
MODULE_PATH,
NGINX_CONFD,
)
from kiauh.utils.logger import Logger from kiauh.utils.logger import Logger
@@ -48,6 +53,17 @@ def create_directory(_dir: Path) -> None:
raise raise
def create_symlink(source: Path, target: Path, sudo=False) -> None:
try:
cmd = ["ln", "-sf", source, target]
if sudo:
cmd.insert(0, "sudo")
subprocess.run(cmd, stderr=subprocess.PIPE, check=True)
except subprocess.CalledProcessError as e:
Logger.print_error(f"Failed to create symlink: {e}")
raise
def remove_file(file_path: Path, sudo=False) -> None: def remove_file(file_path: Path, sudo=False) -> None:
try: try:
command = f"{'sudo ' if sudo else ''}rm -f {file_path}" command = f"{'sudo ' if sudo else ''}rm -f {file_path}"
@@ -57,6 +73,7 @@ def remove_file(file_path: Path, sudo=False) -> None:
Logger.print_error(log) Logger.print_error(log)
raise raise
def unzip(file: str, target_dir: str) -> None: def unzip(file: str, target_dir: str) -> None:
""" """
Helper function to unzip a zip-archive into a target directory | Helper function to unzip a zip-archive into a target directory |