Source code for flexget.plugins.cli.plugins

from loguru import logger

from flexget import options
from flexget.event import event
from flexget.plugin import get_plugins
from flexget.terminal import TerminalTable, colorize, console, disable_colors, table_parser

logger = logger.bind(name='plugins')


[docs] def plugins_summary(manager, options): if options.table_type == 'porcelain': disable_colors() header = ['Keyword', 'Interfaces', 'Phases', 'Flags'] table = TerminalTable(*header, table_type=options.table_type) for plugin in sorted(get_plugins(phase=options.phase, interface=options.interface)): if options.builtins and not plugin.builtin: continue flags = [] if plugin.instance.__doc__: flags.append('doc') if plugin.builtin: flags.append('builtin') if plugin.debug: if not options.debug: continue flags.append('developers') handlers = plugin.phase_handlers roles = [] for phase in handlers: priority = handlers[phase].priority roles.append(f'{phase}({priority})') name = colorize('green', plugin.name) if 'builtin' in flags else plugin.name table.add_row(name, ', '.join(plugin.interfaces), ', '.join(roles), ', '.join(flags)) table.caption = colorize('green', ' Built-in plugins') table.caption_justify = 'left' console(table)
[docs] @event('options.register') def register_parser_arguments(): parser = options.register_command( 'plugins', plugins_summary, help='Print registered plugin summaries', parents=[table_parser], ) parser.add_argument('--interface', help='Show plugins belonging to this interface') parser.add_argument('--phase', help='Show plugins that act on this phase') parser.add_argument('--builtins', action='store_true', help='Show just builtin plugins')