def plugins(self, phase=None): """Get currently enabled plugins. :param string phase: Optional, limits to plugins currently configured on given phase, sorted in phase order. :return: An iterator over configured :class:`flexget.plugin.PluginInfo` instances enabled on this task. """ if phase: plugins = sorted(get_plugins(phase=phase), key=lambda p: p.phase_handlers[phase], reverse=True) else: plugins = all_plugins.itervalues() return (p for p in plugins if p.name in self.config or p.builtin)
def validator(self): from flexget import validator root = validator.factory('list') key_validator = validator.factory('regexp_match', message='If statements cannot contain `__`, `try` or `lambda` statements') key_validator.reject(r'.*?(__|try\s*:|lambda)') key_validator.accept('.') action = root.accept('dict').accept_valid_keys('root', key_validator=key_validator) action.accept('choice').accept_choices(['accept', 'reject', 'fail']) filter_action = action.accept('dict') # Build a dict validator that accepts all api > 2 plugins except input plugins. for plugin in all_plugins.itervalues(): if plugin.api_ver > 1 and hasattr(plugin.instance, 'validator') and 'input' not in plugin.phase_handlers: filter_action.accept(plugin.instance.validator, key=plugin.name) return root
def groups(): # TODO: There should probably be a function in plugin.py to get this groups = set() for plugin in plugins.itervalues(): groups.update(plugin.get('groups')) return jsonify(groups=list(groups))
def all_plugins(): return jsonify(plugins=plugin_infos(plugins.itervalues()))
def all_builtins(): """Helper function to return an iterator over all builtin plugins.""" return (plugin for plugin in plugins.itervalues() if plugin.builtin)