Browse Source

Pylightning: allow to set description and long description manually

This just adds the possibility to set a command's descriptionS by hand, so that the method docstring can be used for something else
pull/2938/head
darosior 6 years ago
committed by Christian Decker
parent
commit
7ea5c5c00f
  1. 24
      contrib/pylightning/lightning/plugin.py

24
contrib/pylightning/lightning/plugin.py

@ -30,12 +30,15 @@ class Method(object):
- RPC exposed by RPC passthrough - RPC exposed by RPC passthrough
- HOOK registered to be called synchronously by lightningd - 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.name = name
self.func = func self.func = func
self.mtype = mtype self.mtype = mtype
self.category = category self.category = category
self.background = False self.background = False
self.desc = desc
self.long_desc = long_desc
class Request(dict): class Request(dict):
@ -119,7 +122,8 @@ class Plugin(object):
self.write_lock = RLock() 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. """Add a plugin method to the dispatch table.
The function will be expected at call time (see `_dispatch`) The function will be expected at call time (see `_dispatch`)
@ -156,7 +160,7 @@ class Plugin(object):
) )
# Register the function with the name # 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 method.background = background
self.methods[name] = method self.methods[name] = method
@ -216,23 +220,25 @@ class Plugin(object):
else: else:
return self.options[name]['default'] 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. """Decorator to add an async plugin method to the dispatch table.
Internally uses add_method. Internally uses add_method.
""" """
def decorator(f): 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 f
return decorator 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. """Decorator to add a plugin method to the dispatch table.
Internally uses add_method. Internally uses add_method.
""" """
def decorator(f): 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 f
return decorator return decorator
@ -480,8 +486,10 @@ class Plugin(object):
'name': method.name, 'name': method.name,
'category': method.category if method.category else "plugin", 'category': method.category if method.category else "plugin",
'usage': " ".join(args), '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 { return {
'options': list(self.options.values()), 'options': list(self.options.values()),

Loading…
Cancel
Save