Compare commits

...

4 Commits

Author SHA1 Message Date
dw-0
50b1bc5154 Merge 9342c94096 into a374ac8fac 2024-05-11 21:40:34 +02:00
dw-0
9342c94096 chore: cleanup and update toml, create editorconfig
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-05-11 20:18:09 +02:00
dw-0
ea78ba25e6 fix(crowsnest): fix multi instance steps
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2024-05-11 19:45:42 +02:00
Justin Otherguy
a374ac8fac fix: add unzip to dependencies for Mainsail and Fluidd 2024-05-09 20:56:16 +02:00
6 changed files with 55 additions and 48 deletions

11
.editorconfig Normal file
View File

@@ -0,0 +1,11 @@
root = true
[*]
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
[*.py]
max_line_length = 88

View File

@@ -1,20 +0,0 @@
[kiauh]
backup_before_update: False
[klipper]
repository_url: https://github.com/Klipper3d/klipper
branch: master
method: https
[moonraker]
repository_url: https://github.com/Arksine/moonraker
branch: master
method: https
[mainsail]
port: 80
unstable_releases: False
[fluidd]
port: 80
unstable_releases: False

View File

@@ -9,29 +9,30 @@
from __future__ import annotations from __future__ import annotations
import shutil import shutil
import textwrap import time
from pathlib import Path from pathlib import Path
from subprocess import run, CalledProcessError from subprocess import CalledProcessError, run
from typing import List, Dict, Literal, Union from typing import Dict, List, Literal, Union
from components.crowsnest import CROWSNEST_REPO, CROWSNEST_DIR, CROWSNEST_BACKUP_DIR from components.crowsnest import CROWSNEST_BACKUP_DIR, CROWSNEST_DIR, CROWSNEST_REPO
from components.klipper.klipper import Klipper from components.klipper.klipper import Klipper
from core.backup_manager.backup_manager import BackupManager from core.backup_manager.backup_manager import BackupManager
from core.instance_manager.instance_manager import InstanceManager from core.instance_manager.instance_manager import InstanceManager
from core.settings.kiauh_settings import KiauhSettings from core.settings.kiauh_settings import KiauhSettings
from utils.common import get_install_status, check_install_dependencies from utils.common import check_install_dependencies, get_install_status
from utils.constants import COLOR_CYAN, RESET_FORMAT, CURRENT_USER from utils.constants import CURRENT_USER
from utils.git_utils import ( from utils.git_utils import (
git_clone_wrapper,
get_repo_name,
get_local_commit, get_local_commit,
get_remote_commit, get_remote_commit,
get_repo_name,
git_clone_wrapper,
git_pull_wrapper, git_pull_wrapper,
) )
from utils.logger import Logger from utils.input_utils import get_confirm
from utils.logger import DialogType, Logger
from utils.sys_utils import ( from utils.sys_utils import (
parse_packages_from_file,
cmd_sysctl_service, cmd_sysctl_service,
parse_packages_from_file,
) )
@@ -44,14 +45,22 @@ def install_crowsnest() -> None:
# Step 3: Check for Multi Instance # Step 3: Check for Multi Instance
im = InstanceManager(Klipper) im = InstanceManager(Klipper)
instances: List[Klipper] = im.find_instances() instances: List[Klipper] = im.instances
if len(instances) > 1: if len(instances) > 1:
configure_multi_instance(instances) print_multi_instance_warning(instances)
if not get_confirm("Do you want to continue with the installation?"):
Logger.print_info("Crowsnest installation aborted!")
return
Logger.print_status("Launching crowsnest's install configurator ...")
time.sleep(3)
configure_multi_instance()
# Step 4: Launch crowsnest installer # Step 4: Launch crowsnest installer
print(f"{COLOR_CYAN}Installer will prompt you for sudo password!{RESET_FORMAT}")
Logger.print_status("Launching crowsnest installer ...") Logger.print_status("Launching crowsnest installer ...")
Logger.print_info("Installer will prompt you for sudo password!")
try: try:
run( run(
f"sudo make install BASE_USER={CURRENT_USER}", f"sudo make install BASE_USER={CURRENT_USER}",
@@ -64,20 +73,25 @@ def install_crowsnest() -> None:
return return
def configure_multi_instance(instances: List[Klipper]) -> None: def print_multi_instance_warning(instances: List[Klipper]) -> None:
Logger.print_status("Multi instance install detected ...") _instances = [f"{instance.data_dir_name}" for instance in instances]
info = textwrap.dedent(""" Logger.print_dialog(
Crowsnest is NOT designed to support multi instances. DialogType.WARNING,
A workaround for this is to choose the most used instance as a 'master' [
Use this instance to set up your 'crowsnest.conf' and steering it's service. "Multi instance install detected!",
Found the following instances: "\n\n",
""")[:-1] "Crowsnest is NOT designed to support multi instances. A workaround "
print(info, end="") "for this is to choose the most used instance as a 'master' and use "
for instance in instances: "this instance to set up your 'crowsnest.conf' and steering it's service.",
print(f"{instance.data_dir_name}") "\n\n",
"The following instances were found:",
*_instances,
],
end="",
)
Logger.print_status("\nLaunching crowsnest's configuration tool ...")
def configure_multi_instance() -> None:
config = Path(CROWSNEST_DIR).joinpath("tools/.config") config = Path(CROWSNEST_DIR).joinpath("tools/.config")
try: try:
run( run(
@@ -94,7 +108,6 @@ def configure_multi_instance(instances: List[Klipper]) -> None:
if not config.exists(): if not config.exists():
Logger.print_error("Generating .config failed, installation aborted") Logger.print_error("Generating .config failed, installation aborted")
return
def update_crowsnest() -> None: def update_crowsnest() -> None:

View File

@@ -1,6 +1,9 @@
[project] [project]
requires-python = ">=3.8" requires-python = ">=3.8"
[project.optional-dependencies]
dev=["ruff"]
[tool.ruff] [tool.ruff]
required-version = ">=0.3.4" required-version = ">=0.3.4"
respect-gitignore = true respect-gitignore = true

View File

@@ -37,7 +37,7 @@ function install_fluidd() {
fi fi
### checking dependencies ### checking dependencies
local dep=(wget nginx) local dep=(wget nginx unzip)
dependency_check "${dep[@]}" dependency_check "${dep[@]}"
### detect conflicting Haproxy and Apache2 installations ### detect conflicting Haproxy and Apache2 installations
detect_conflicting_packages detect_conflicting_packages

View File

@@ -37,7 +37,7 @@ function install_mainsail() {
fi fi
### checking dependencies ### checking dependencies
local dep=(wget nginx) local dep=(wget nginx unzip)
dependency_check "${dep[@]}" dependency_check "${dep[@]}"
### detect conflicting Haproxy and Apache2 installations ### detect conflicting Haproxy and Apache2 installations
detect_conflicting_packages detect_conflicting_packages