diff --git a/forwarding.py b/forwarding.py index 6ec5b09..1c7e791 100644 --- a/forwarding.py +++ b/forwarding.py @@ -2,12 +2,13 @@ import click import subprocess from logger import logging from ssh import cmd_ssh -from wrapper import enforce_wrap +from wrapper import check_programs_wrap @click.command(name='forwarding') def cmd_forwarding(): - enforce_wrap() + check_programs_wrap(['syctl', 'iptables']) + result = subprocess.run([ 'sysctl', 'net.ipv4.ip_forward=1', diff --git a/packages.py b/packages.py index f545fd2..1340e41 100644 --- a/packages.py +++ b/packages.py @@ -10,7 +10,7 @@ from config import config from chroot import create_chroot from joblib import Parallel, delayed from distro import get_kupfer_local -from wrapper import enforce_wrap +from wrapper import enforce_wrap, check_programs_wrap makepkg_env = os.environ.copy() | { 'LANG': 'C', @@ -539,7 +539,7 @@ def cmd_build(paths: list[str], force=False, arch='aarch64'): @cmd_packages.command(name='clean') def cmd_clean(): - enforce_wrap() + check_programs_wrap('git') result = subprocess.run([ 'git', 'clean', diff --git a/ssh.py b/ssh.py index 8b62245..d16edb2 100644 --- a/ssh.py +++ b/ssh.py @@ -1,9 +1,11 @@ import subprocess import click +from wrapper import check_programs_wrap @click.command(name='ssh') def cmd_ssh(cmd: list[str] = [], host: str = '172.16.42.1', user: str = 'kupfer', port: int = 22): + check_programs_wrap('ssh') return subprocess.run([ 'ssh', '-o', diff --git a/telnet.py b/telnet.py index 23d13cc..df61a04 100644 --- a/telnet.py +++ b/telnet.py @@ -1,11 +1,11 @@ import subprocess import click -from wrapper import enforce_wrap +from wrapper import check_programs_wrap @click.command(name='telnet') def cmd_telnet(hostname: str = '172.16.42.1'): - enforce_wrap() + check_programs_wrap('telnet') subprocess.run([ 'telnet', hostname, diff --git a/wrapper.py b/wrapper.py index ca5e572..ef2078d 100644 --- a/wrapper.py +++ b/wrapper.py @@ -6,6 +6,7 @@ import uuid import click import logging from config import config, dump_file as dump_config_file +from utils import programs_available DOCKER_PATHS = { 'chroots': '/chroot', @@ -107,6 +108,11 @@ def enforce_wrap(no_wrapper=False): wrap_docker() +def check_programs_wrap(programs): + if not programs_available(programs): + enforce_wrap() + + nowrapper_option = click.option( '--no-wrapper', 'no_wrapper',