"""
"""
from __future__ import absolute_import
import shlex
from abc import ABCMeta, abstractmethod
from contextlib import contextmanager
try:
from shlex import quote
except ImportError:
from pipes import quote
from six import with_metaclass, string_types
[docs]class ExecutionContext(with_metaclass(ABCMeta, object)):
def __init__(self, image, **kwargs):
self.image = image
[docs] def normalize_cmd(self, cmd):
if isinstance(cmd, string_types):
cmd = shlex.split(cmd)
return cmd
[docs] def stringify_cmd(self, cmd):
if isinstance(cmd, string_types):
return cmd
r = ''
for e in cmd:
r += quote(e) + ' '
return r.strip()
[docs] @contextmanager
def run_context(self, **kwargs):
self.start(**kwargs)
try:
yield self.run
finally:
self.destroy()
[docs] @abstractmethod
def start(self, **kwargs):
"""
"""
[docs] @abstractmethod
def run(self, cmd, **kwargs):
"""
"""
[docs] @abstractmethod
def destroy(self, **kwargs):
"""
"""