fix(Mainsail): implement missing mainsail cfg symlinking
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -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 ...")
|
||||||
|
|||||||
@@ -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 |
|
||||||
|
|||||||
Reference in New Issue
Block a user