wrapper/: introduce Wrapper protocol

This commit is contained in:
InsanePrawn 2022-02-17 16:25:31 +01:00
parent 3fbda2e089
commit 14a2d0ae12
3 changed files with 37 additions and 12 deletions

View file

@ -1,13 +1,13 @@
import os
import click
import logging
from config import config
from utils import programs_available
from .docker import DockerWrapper
from .wrapper import Wrapper
wrapper_impls = {
'docker': DockerWrapper,
wrapper_impls: dict[str, Wrapper] = {
'docker': DockerWrapper(),
}
@ -15,15 +15,18 @@ def get_wrapper_type(wrapper_type: str = None):
return wrapper_type or config.file['wrapper']['type']
def get_wrapper_impl(wrapper_type: str = None) -> Wrapper:
return wrapper_impls[get_wrapper_type(wrapper_type)]
def wrap(wrapper_type: str = None):
wrapper_type = get_wrapper_type(wrapper_type)
if wrapper_type != 'none':
wrapper_impls[wrapper_type]().wrap()
get_wrapper_impl(wrapper_type).wrap()
def is_wrapped(wrapper_type: str = None):
wrapper_type = get_wrapper_type(wrapper_type)
return os.getenv('KUPFERBOOTSTRAP_WRAPPED') == wrapper_type.capitalize()
return get_wrapper_impl(wrapper_type).is_wrapped()
def enforce_wrap(no_wrapper=False):