wrapper: add Wrapper.should_exit

This commit is contained in:
InsanePrawn 2023-03-13 05:33:21 +01:00
parent d2d9cb6c7c
commit 389d44e776
2 changed files with 8 additions and 5 deletions

View file

@ -7,7 +7,7 @@ import sys
from config.state import config from config.state import config
from exec.file import makedir from exec.file import makedir
from .wrapper import BaseWrapper, WRAPPER_PATHS from .wrapper import Wrapper, WRAPPER_PATHS
DOCKER_PATHS = WRAPPER_PATHS.copy() DOCKER_PATHS = WRAPPER_PATHS.copy()
@ -19,7 +19,7 @@ def docker_volumes_args(volume_mappings: dict[str, str]) -> list[str]:
return result return result
class DockerWrapper(BaseWrapper): class DockerWrapper(Wrapper):
type: str = 'docker' type: str = 'docker'
def wrap(self): def wrap(self):
@ -98,8 +98,9 @@ class DockerWrapper(BaseWrapper):
cmd = docker_cmd + kupfer_cmd cmd = docker_cmd + kupfer_cmd
logging.debug('Wrapping in docker:' + repr(cmd)) logging.debug('Wrapping in docker:' + repr(cmd))
result = subprocess.run(cmd) result = subprocess.run(cmd)
if self.should_exit:
exit(result.returncode) exit(result.returncode)
return result.returncode
def stop(self): def stop(self):
subprocess.run( subprocess.run(

View file

@ -15,7 +15,7 @@ WRAPPER_PATHS = CHROOT_PATHS | {
} }
class Wrapper(Protocol): class WrapperProtocol(Protocol):
"""Wrappers wrap kupferbootstrap in some form of isolation from the host OS, i.e. docker or chroots""" """Wrappers wrap kupferbootstrap in some form of isolation from the host OS, i.e. docker or chroots"""
def wrap(self): def wrap(self):
@ -37,11 +37,13 @@ class Wrapper(WrapperProtocol):
type: str type: str
wrapped_config_path: str wrapped_config_path: str
argv_override: Optional[list[str]] argv_override: Optional[list[str]]
should_exit: bool
def __init__(self, random_id: Optional[str] = None, name: Optional[str] = None): def __init__(self, random_id: Optional[str] = None, name: Optional[str] = None):
self.uuid = str(random_id or uuid.uuid4()) self.uuid = str(random_id or uuid.uuid4())
self.identifier = name or f'kupferbootstrap-{self.uuid}' self.identifier = name or f'kupferbootstrap-{self.uuid}'
self.argv_override = None self.argv_override = None
self.should_exit = True
def filter_args_wrapper(self, args): def filter_args_wrapper(self, args):
"""filter out -c/--config since it doesn't apply in wrapper""" """filter out -c/--config since it doesn't apply in wrapper"""