forked from platypush/platypush
34 lines
898 B
Python
34 lines
898 B
Python
import inspect
|
|
import logging
|
|
import os
|
|
|
|
from platypush.utils.manifest import Manifest
|
|
|
|
logger = logging.getLogger('platypush')
|
|
|
|
|
|
def exec_wrapper(f, *args, **kwargs):
|
|
from platypush import Response
|
|
|
|
try:
|
|
ret = f(*args, **kwargs)
|
|
if isinstance(ret, Response):
|
|
return ret
|
|
|
|
return Response(output=ret)
|
|
except Exception as e:
|
|
logger.exception(e)
|
|
return Response(errors=[str(e)])
|
|
|
|
|
|
class ExtensionWithManifest:
|
|
def __init__(self, *_, **__):
|
|
self._manifest = self.get_manifest()
|
|
|
|
def get_manifest(self) -> Manifest:
|
|
manifest_file = os.path.join(os.path.dirname(inspect.getfile(self.__class__)), 'manifest.yaml')
|
|
assert os.path.isfile(manifest_file), (
|
|
'The extension {} has no associated manifest.yaml'.format(self.__class__.__name__)
|
|
)
|
|
|
|
return Manifest.from_file(manifest_file)
|