diff --git a/contrib/pylightning/lightning/plugin.py b/contrib/pylightning/lightning/plugin.py index c4eaa4641..fa764059f 100644 --- a/contrib/pylightning/lightning/plugin.py +++ b/contrib/pylightning/lightning/plugin.py @@ -30,12 +30,15 @@ class Method(object): - RPC exposed by RPC passthrough - HOOK registered to be called synchronously by lightningd """ - def __init__(self, name, func, mtype=MethodType.RPCMETHOD, category=None): + def __init__(self, name, func, mtype=MethodType.RPCMETHOD, category=None, + desc=None, long_desc=None): self.name = name self.func = func self.mtype = mtype self.category = category self.background = False + self.desc = desc + self.long_desc = long_desc class Request(dict): @@ -119,7 +122,8 @@ class Plugin(object): self.write_lock = RLock() - def add_method(self, name, func, background=False, category=None): + def add_method(self, name, func, background=False, category=None, desc=None, + long_desc=None): """Add a plugin method to the dispatch table. The function will be expected at call time (see `_dispatch`) @@ -156,7 +160,7 @@ class Plugin(object): ) # Register the function with the name - method = Method(name, func, MethodType.RPCMETHOD, category) + method = Method(name, func, MethodType.RPCMETHOD, category, desc, long_desc) method.background = background self.methods[name] = method @@ -216,23 +220,25 @@ class Plugin(object): else: return self.options[name]['default'] - def async_method(self, method_name, category=None): + def async_method(self, method_name, category=None, desc=None, long_desc=None): """Decorator to add an async plugin method to the dispatch table. Internally uses add_method. """ def decorator(f): - self.add_method(method_name, f, background=True, category=category) + self.add_method(method_name, f, background=True, category=category, + desc=desc, long_desc=long_desc) return f return decorator - def method(self, method_name, category=None): + def method(self, method_name, category=None, desc=None, long_desc=None): """Decorator to add a plugin method to the dispatch table. Internally uses add_method. """ def decorator(f): - self.add_method(method_name, f, background=False, category=category) + self.add_method(method_name, f, background=False, category=category, + desc=desc, long_desc=long_desc) return f return decorator @@ -480,8 +486,10 @@ class Plugin(object): 'name': method.name, 'category': method.category if method.category else "plugin", 'usage': " ".join(args), - 'description': doc + 'description': doc if not method.desc else method.desc }) + if method.long_desc: + methods[len(methods) - 1]["long_description"] = method.long_desc return { 'options': list(self.options.values()),