forked from localstack/localstack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin.py
More file actions
42 lines (27 loc) · 933 Bytes
/
plugin.py
File metadata and controls
42 lines (27 loc) · 933 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import abc
import logging
import os
import click
from localstack.plugin import Plugin
LOG = logging.getLogger(__name__)
class LocalstackCli:
group: click.Group
def __call__(self, *args, **kwargs):
self.group(*args, **kwargs)
class LocalstackCliPlugin(Plugin):
namespace = "localstack.plugins.cli"
def load(self, cli) -> None:
self.attach(cli)
@abc.abstractmethod
def attach(self, cli: LocalstackCli) -> None:
"""
Attach commands to the `localstack` CLI.
:param cli: the cli object
"""
def load_cli_plugins(cli):
from localstack.plugin.manager import PluginManager
if os.environ.get("DEBUG_PLUGINS", "0").lower() in ("true", "1"):
# importing localstack.config is still quite expensive...
logging.basicConfig(level=logging.DEBUG)
loader = PluginManager("localstack.plugins.cli", load_args=(cli,))
loader.load_all()