mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-25 16:53:36 +05:00
refactor: do not run the requirements installation if the virtualenv already exists
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -154,8 +154,8 @@ def setup_klipper_prerequesites() -> None:
|
|||||||
# install klipper dependencies and create python virtualenv
|
# install klipper dependencies and create python virtualenv
|
||||||
try:
|
try:
|
||||||
install_klipper_packages()
|
install_klipper_packages()
|
||||||
create_python_venv(KLIPPER_ENV_DIR)
|
if create_python_venv(KLIPPER_ENV_DIR):
|
||||||
install_python_requirements(KLIPPER_ENV_DIR, KLIPPER_REQ_FILE)
|
install_python_requirements(KLIPPER_ENV_DIR, KLIPPER_REQ_FILE)
|
||||||
except Exception:
|
except Exception:
|
||||||
Logger.print_error("Error during installation of Klipper requirements!")
|
Logger.print_error("Error during installation of Klipper requirements!")
|
||||||
raise
|
raise
|
||||||
|
|||||||
@@ -150,9 +150,9 @@ def setup_moonraker_prerequesites() -> None:
|
|||||||
|
|
||||||
# install moonraker dependencies and create python virtualenv
|
# install moonraker dependencies and create python virtualenv
|
||||||
install_moonraker_packages()
|
install_moonraker_packages()
|
||||||
create_python_venv(MOONRAKER_ENV_DIR)
|
if create_python_venv(MOONRAKER_ENV_DIR):
|
||||||
install_python_requirements(MOONRAKER_ENV_DIR, MOONRAKER_REQ_FILE)
|
install_python_requirements(MOONRAKER_ENV_DIR, MOONRAKER_REQ_FILE)
|
||||||
install_python_requirements(MOONRAKER_ENV_DIR, MOONRAKER_SPEEDUPS_REQ_FILE)
|
install_python_requirements(MOONRAKER_ENV_DIR, MOONRAKER_SPEEDUPS_REQ_FILE)
|
||||||
|
|
||||||
|
|
||||||
def install_moonraker_packages() -> None:
|
def install_moonraker_packages() -> None:
|
||||||
|
|||||||
@@ -31,3 +31,4 @@ OBICO_ENV_DIR = Path.home().joinpath("moonraker-obico-env")
|
|||||||
OBICO_SERVICE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{OBICO_SERVICE_NAME}")
|
OBICO_SERVICE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{OBICO_SERVICE_NAME}")
|
||||||
OBICO_ENV_FILE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{OBICO_ENV_FILE_NAME}")
|
OBICO_ENV_FILE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{OBICO_ENV_FILE_NAME}")
|
||||||
OBICO_LINK_SCRIPT = OBICO_DIR.joinpath("scripts/link.sh")
|
OBICO_LINK_SCRIPT = OBICO_DIR.joinpath("scripts/link.sh")
|
||||||
|
OBICO_REQ_FILE = OBICO_DIR.joinpath("requirements.txt")
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ from extensions.obico import (
|
|||||||
OBICO_ENV_DIR,
|
OBICO_ENV_DIR,
|
||||||
OBICO_MACROS_CFG_NAME,
|
OBICO_MACROS_CFG_NAME,
|
||||||
OBICO_REPO,
|
OBICO_REPO,
|
||||||
|
OBICO_REQ_FILE,
|
||||||
OBICO_UPDATE_CFG_NAME,
|
OBICO_UPDATE_CFG_NAME,
|
||||||
OBICO_UPDATE_CFG_SAMPLE_NAME,
|
OBICO_UPDATE_CFG_SAMPLE_NAME,
|
||||||
)
|
)
|
||||||
@@ -239,9 +240,8 @@ class ObicoExtension(BaseExtension):
|
|||||||
check_install_dependencies({*package_list})
|
check_install_dependencies({*package_list})
|
||||||
|
|
||||||
# create virtualenv
|
# create virtualenv
|
||||||
create_python_venv(OBICO_ENV_DIR)
|
if create_python_venv(OBICO_ENV_DIR):
|
||||||
requirements = OBICO_DIR.joinpath("requirements.txt")
|
install_python_requirements(OBICO_ENV_DIR, OBICO_REQ_FILE)
|
||||||
install_python_requirements(OBICO_ENV_DIR, requirements)
|
|
||||||
|
|
||||||
def _create_obico_macros_cfg(self, moonraker) -> None:
|
def _create_obico_macros_cfg(self, moonraker) -> None:
|
||||||
macros_cfg = OBICO_DIR.joinpath(f"include_cfgs/{OBICO_MACROS_CFG_NAME}")
|
macros_cfg = OBICO_DIR.joinpath(f"include_cfgs/{OBICO_MACROS_CFG_NAME}")
|
||||||
|
|||||||
@@ -26,3 +26,4 @@ TG_BOT_ENV = Path.home().joinpath("moonraker-telegram-bot-env")
|
|||||||
# files
|
# files
|
||||||
TG_BOT_SERVICE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{TG_BOT_SERVICE_NAME}")
|
TG_BOT_SERVICE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{TG_BOT_SERVICE_NAME}")
|
||||||
TG_BOT_ENV_FILE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{TG_BOT_ENV_FILE_NAME}")
|
TG_BOT_ENV_FILE_TEMPLATE = MODULE_PATH.joinpath(f"assets/{TG_BOT_ENV_FILE_NAME}")
|
||||||
|
TG_BOT_REQ_FILE = TG_BOT_DIR.joinpath("scripts/requirements.txt")
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from components.moonraker.moonraker import Moonraker
|
|||||||
from core.instance_manager.instance_manager import InstanceManager
|
from core.instance_manager.instance_manager import InstanceManager
|
||||||
from core.logger import DialogType, Logger
|
from core.logger import DialogType, Logger
|
||||||
from extensions.base_extension import BaseExtension
|
from extensions.base_extension import BaseExtension
|
||||||
from extensions.telegram_bot import TG_BOT_REPO
|
from extensions.telegram_bot import TG_BOT_REPO, TG_BOT_REQ_FILE
|
||||||
from extensions.telegram_bot.moonraker_telegram_bot import (
|
from extensions.telegram_bot.moonraker_telegram_bot import (
|
||||||
TG_BOT_DIR,
|
TG_BOT_DIR,
|
||||||
TG_BOT_ENV,
|
TG_BOT_ENV,
|
||||||
@@ -161,9 +161,8 @@ class TelegramBotExtension(BaseExtension):
|
|||||||
check_install_dependencies({*package_list})
|
check_install_dependencies({*package_list})
|
||||||
|
|
||||||
# create virtualenv
|
# create virtualenv
|
||||||
create_python_venv(TG_BOT_ENV)
|
if create_python_venv(TG_BOT_ENV):
|
||||||
requirements = TG_BOT_DIR.joinpath("scripts/requirements.txt")
|
install_python_requirements(TG_BOT_ENV, TG_BOT_REQ_FILE)
|
||||||
install_python_requirements(TG_BOT_ENV, requirements)
|
|
||||||
|
|
||||||
def _patch_bot_update_manager(self, instances: List[Moonraker]) -> None:
|
def _patch_bot_update_manager(self, instances: List[Moonraker]) -> None:
|
||||||
env_py = f"{TG_BOT_ENV}/bin/python"
|
env_py = f"{TG_BOT_ENV}/bin/python"
|
||||||
|
|||||||
@@ -87,11 +87,13 @@ def parse_packages_from_file(source_file: Path) -> List[str]:
|
|||||||
return packages
|
return packages
|
||||||
|
|
||||||
|
|
||||||
def create_python_venv(target: Path) -> None:
|
def create_python_venv(target: Path) -> bool:
|
||||||
"""
|
"""
|
||||||
Create a python 3 virtualenv at the provided target destination |
|
Create a python 3 virtualenv at the provided target destination.
|
||||||
|
Returns True if the virtualenv was created successfully.
|
||||||
|
Returns False if the virtualenv already exists, recreation was declined or creation failed.
|
||||||
:param target: Path where to create the virtualenv at
|
:param target: Path where to create the virtualenv at
|
||||||
:return: None
|
:return: bool
|
||||||
"""
|
"""
|
||||||
Logger.print_status("Set up Python virtual environment ...")
|
Logger.print_status("Set up Python virtual environment ...")
|
||||||
if not target.exists():
|
if not target.exists():
|
||||||
@@ -99,20 +101,25 @@ def create_python_venv(target: Path) -> None:
|
|||||||
cmd = ["virtualenv", "-p", "/usr/bin/python3", target.as_posix()]
|
cmd = ["virtualenv", "-p", "/usr/bin/python3", target.as_posix()]
|
||||||
run(cmd, check=True)
|
run(cmd, check=True)
|
||||||
Logger.print_ok("Setup of virtualenv successful!")
|
Logger.print_ok("Setup of virtualenv successful!")
|
||||||
|
return True
|
||||||
except CalledProcessError as e:
|
except CalledProcessError as e:
|
||||||
Logger.print_error(f"Error setting up virtualenv:\n{e}")
|
Logger.print_error(f"Error setting up virtualenv:\n{e}")
|
||||||
raise
|
return False
|
||||||
else:
|
else:
|
||||||
if get_confirm("Virtualenv already exists. Re-create?", default_choice=False):
|
if not get_confirm(
|
||||||
try:
|
"Virtualenv already exists. Re-create?", default_choice=False
|
||||||
shutil.rmtree(target)
|
):
|
||||||
create_python_venv(target)
|
|
||||||
except OSError as e:
|
|
||||||
log = f"Error removing existing virtualenv: {e.strerror}"
|
|
||||||
Logger.print_error(log, False)
|
|
||||||
raise
|
|
||||||
else:
|
|
||||||
Logger.print_info("Skipping re-creation of virtualenv ...")
|
Logger.print_info("Skipping re-creation of virtualenv ...")
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
shutil.rmtree(target)
|
||||||
|
create_python_venv(target)
|
||||||
|
return True
|
||||||
|
except OSError as e:
|
||||||
|
log = f"Error removing existing virtualenv: {e.strerror}"
|
||||||
|
Logger.print_error(log, False)
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def update_python_pip(target: Path) -> None:
|
def update_python_pip(target: Path) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user