feat: Introduce check_dependencies to verify required system tools before installation.
This commit is contained in:
parent
0f87ed3896
commit
56dddd6a2c
1 changed files with 25 additions and 0 deletions
25
z.py
25
z.py
|
|
@ -5,6 +5,7 @@ import sys
|
||||||
import os
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
import getpass
|
import getpass
|
||||||
|
import shutil
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
|
|
@ -127,12 +128,36 @@ def run_live_command(command, log_func=None, check=True, shell=False, dry_run=Fa
|
||||||
# Mimic subprocess.CalledProcessError
|
# Mimic subprocess.CalledProcessError
|
||||||
raise subprocess.CalledProcessError(return_code, command)
|
raise subprocess.CalledProcessError(return_code, command)
|
||||||
|
|
||||||
|
def check_dependencies(log_func=print):
|
||||||
|
"""Checks if required system tools are available."""
|
||||||
|
required_tools = [
|
||||||
|
"lsblk", "btrfs", "mkfs.btrfs", "mkfs.fat",
|
||||||
|
"pacstrap", "genfstab", "arch-chroot"
|
||||||
|
]
|
||||||
|
missing = []
|
||||||
|
for tool in required_tools:
|
||||||
|
if not shutil.which(tool):
|
||||||
|
missing.append(tool)
|
||||||
|
|
||||||
|
if missing:
|
||||||
|
msg = f"Error: Missing required tools: {', '.join(missing)}\nPlease install: btrfs-progs, dosfstools, arch-install-scripts"
|
||||||
|
log_func(msg)
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
|
||||||
def perform_installation(config: InstallConfig, log_func=print):
|
def perform_installation(config: InstallConfig, log_func=print):
|
||||||
"""
|
"""
|
||||||
Executes the installation process based on the provided configuration.
|
Executes the installation process based on the provided configuration.
|
||||||
log_func is a function to display messages (defaults to print).
|
log_func is a function to display messages (defaults to print).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
check_dependencies(log_func)
|
||||||
|
except RuntimeError:
|
||||||
|
# If check fails, we stop. In TUI this will define the error.
|
||||||
|
return
|
||||||
|
|
||||||
|
# helper for dry_run propagation
|
||||||
|
|
||||||
# helper for dry_run propagation
|
# helper for dry_run propagation
|
||||||
def run(cmd, **kwargs):
|
def run(cmd, **kwargs):
|
||||||
# Merge dry_run into kwargs if not explicitly set
|
# Merge dry_run into kwargs if not explicitly set
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue