def help(self): """ Show information about loaded plugins. :return: Information :rtype: str """ return loaded(self.container, Actions())
def help(self): """ Show information about loaded plugins. :return: Information :rtype: str """ s = list() s.append('Plugins:') container = Container() for p in container.all(): if not p.enabled: continue # plugin s.append('') s.append(indent('<plugin> %s', 2, p.name)) # classes s.append(indent('Classes:', 4)) for n, v in p.dispatcher.catalog.items(): if inspect.ismodule(v): continue s.append(indent('<class> %s', 6, n)) s.append(indent('methods:', 8)) for n, v in inspect.getmembers(v, inspect.ismethod): fn = v.im_func if not hasattr(fn, 'gofer'): continue s.append(indent(signature(n, fn), 10)) # functions s.append(indent('Functions:', 4)) for n, v in p.dispatcher.catalog.items(): if not inspect.ismodule(v): continue for n, v in inspect.getmembers(v, inspect.isfunction): fn = v if not hasattr(fn, 'gofer'): continue s.append(indent(signature(n, fn), 6)) s.append('') s.append('Actions:') for a in [(a.name(), a.interval) for a in Actions().collated()]: s.append(' %s %s' % a) return '\n'.join(s)