From 389d44e776419e3f637413aadafe6b0f1824f9d7 Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Mon, 13 Mar 2023 05:33:21 +0100 Subject: [PATCH] wrapper: add Wrapper.should_exit --- wrapper/docker.py | 9 +++++---- wrapper/wrapper.py | 4 +++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/wrapper/docker.py b/wrapper/docker.py index cac3088..d61a35b 100644 --- a/wrapper/docker.py +++ b/wrapper/docker.py @@ -7,7 +7,7 @@ import sys from config.state import config from exec.file import makedir -from .wrapper import BaseWrapper, WRAPPER_PATHS +from .wrapper import Wrapper, WRAPPER_PATHS DOCKER_PATHS = WRAPPER_PATHS.copy() @@ -19,7 +19,7 @@ def docker_volumes_args(volume_mappings: dict[str, str]) -> list[str]: return result -class DockerWrapper(BaseWrapper): +class DockerWrapper(Wrapper): type: str = 'docker' def wrap(self): @@ -98,8 +98,9 @@ class DockerWrapper(BaseWrapper): cmd = docker_cmd + kupfer_cmd logging.debug('Wrapping in docker:' + repr(cmd)) result = subprocess.run(cmd) - - exit(result.returncode) + if self.should_exit: + exit(result.returncode) + return result.returncode def stop(self): subprocess.run( diff --git a/wrapper/wrapper.py b/wrapper/wrapper.py index 1c7ba01..61bc197 100644 --- a/wrapper/wrapper.py +++ b/wrapper/wrapper.py @@ -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""" def wrap(self): @@ -37,11 +37,13 @@ class Wrapper(WrapperProtocol): type: str wrapped_config_path: str argv_override: Optional[list[str]] + should_exit: bool def __init__(self, random_id: Optional[str] = None, name: Optional[str] = None): self.uuid = str(random_id or uuid.uuid4()) self.identifier = name or f'kupferbootstrap-{self.uuid}' self.argv_override = None + self.should_exit = True def filter_args_wrapper(self, args): """filter out -c/--config since it doesn't apply in wrapper"""