aboutsummaryrefslogtreecommitdiff
path: root/src/utils/decorators.py
diff options
context:
space:
mode:
authorGravatar jesopo2020-01-25 13:58:13 +0000
committerGravatar jesopo2020-01-25 14:01:11 +0000
commit341b3141048a72b59593d17713bf492d5e115ac2 (patch)
treedea044f17f41c3d1714242238625057b8fea39bd /src/utils/decorators.py
parentupdate echo.py to use command spec language (diff)
change command specs to be compiled at runtime by a decorator
Diffstat (limited to 'src/utils/decorators.py')
-rw-r--r--src/utils/decorators.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/utils/decorators.py b/src/utils/decorators.py
index dc4adf3a..ca47ea6e 100644
--- a/src/utils/decorators.py
+++ b/src/utils/decorators.py
@@ -1,4 +1,5 @@
import typing
+from .parse import argument_spec
BITBOT_MAGIC = "__bitbot"
@@ -42,10 +43,18 @@ def export(setting: str, value: typing.Any):
magic.add_export(setting, value)
return module
return _export_func
+
+def _kwarg(key: str, value: typing.Any, func: typing.Any):
+ magic = get_magic(func)
+ magic.add_kwarg(key, value)
+ return func
+
def kwarg(key: str, value: typing.Any):
def _kwarg_func(func):
- magic = get_magic(func)
- magic.add_kwarg(key, value)
- return func
+ return _kwarg(key, value, func)
return _kwarg_func
+def spec(spec: str):
+ def _spec_func(func):
+ return _kwarg("spec", argument_spec(spec), func)
+ return _spec_func