-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathplugins.py
More file actions
31 lines (23 loc) · 805 Bytes
/
plugins.py
File metadata and controls
31 lines (23 loc) · 805 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
import sys
from .danger import Danger, fail, markdown, message, warn
class DangerPlugin:
def __init__(self):
self._danger = None
self.message = message
self.markdown = markdown
self.warn = warn
self.fail = fail
def __init_subclass__(cls, **kwargs):
parent_module = cls.__module__.split(".")[0]
module = sys.modules[parent_module]
instance = cls()
for method_name in dir(cls):
if method_name.startswith("__") or method_name in set(dir(DangerPlugin)):
continue
method = getattr(instance, method_name)
setattr(module, method_name, method)
@property
def danger(self):
if not self._danger:
self._danger = Danger()
return self._danger