Browse Source

Clean up some stuff

Alec Nikolas Reiter 7 years ago
parent
commit
5c3f13651e
2 changed files with 29 additions and 14 deletions
  1. 6 7
      flaskbb/cli/plugins.py
  2. 23 7
      flaskbb/plugins/manager.py

+ 6 - 7
flaskbb/cli/plugins.py

@@ -11,6 +11,7 @@
 import pluggy
 import click
 from flask import current_app
+from flask.cli import with_appcontext
 
 from flaskbb.cli.main import flaskbb
 
@@ -21,7 +22,9 @@ def plugins():
     pass
 
 
+
 @plugins.command("list")
+@with_appcontext
 def list_plugins():
     """Lists all installed plugins."""
     click.secho("[+] Listing all installed plugins...", fg="cyan")
@@ -32,19 +35,15 @@ def list_plugins():
         for plugin in enabled_plugins:
             # plugin[0] is the module
             plugin = plugin[1]
-            click.secho("    - {} (version {})".format(
+            click.secho("\t- {} (version {})".format(
                 plugin.key, plugin.version), bold=True
             )
 
-    # TODO: is there a better way for doing this?
-    pm = pluggy.PluginManager('flaskbb', implprefix='flaskbb_')
-    pm.load_setuptools_entrypoints('flaskbb_plugins')
-    all_plugins = pm.list_plugin_distinfo()
-    disabled_plugins = set(all_plugins) - set(enabled_plugins)
+    disabled_plugins = current_app.pluggy.list_disabled_plugins()
     if len(disabled_plugins) > 0:
         click.secho("[+] Disabled Plugins:", fg="yellow", bold=True)
         for plugin in disabled_plugins:
             plugin = plugin[1]
-            click.secho("    - {} (version {})".format(
+            click.secho("\t- {} (version {})".format(
                 plugin.key, plugin.version), bold=True
             )

+ 23 - 7
flaskbb/plugins/manager.py

@@ -1,3 +1,16 @@
+# -*- coding: utf-8 -*-
+"""
+    flaskbb.plugins.manager
+    ~~~~~~~~~~~~~~~~~~~~~~~
+
+    Plugin Manager for FlaskBB
+
+    :copyright: 2017, the FlaskBB Team
+    :license: BSD, see LICENSE for more details
+"""
+from pkg_resources import (DistributionNotFound, VersionConflict,
+                           iter_entry_points)
+
 import pluggy
 from flaskbb.utils.helpers import parse_pkg_metadata
 
@@ -8,28 +21,31 @@ class FlaskBBPluginManager(pluggy.PluginManager):
     """
 
     def __init__(self, project_name, implprefix=None):
-        super(FlaskBBPluginManager, self).__init__(project_name=project_name,
-                                                   implprefix=implprefix)
+        super(FlaskBBPluginManager, self).__init__(
+            project_name=project_name, implprefix=implprefix
+        )
         self._plugin_metadata = {}
         self._disabled_plugins = []
 
     def load_setuptools_entrypoints(self, entrypoint_name):
         """Load modules from querying the specified setuptools entrypoint name.
         Return the number of loaded plugins. """
-        from pkg_resources import (iter_entry_points, DistributionNotFound,
-                                   VersionConflict)
         for ep in iter_entry_points(entrypoint_name):
-            # is the plugin registered or blocked?
-            if self.get_plugin(ep.name) or self.is_blocked(ep.name):
+            if self.get_plugin(ep.name):
+                continue
+
+            if self.is_blocked(ep.name):
                 self._disabled_plugins.append((ep.name, ep.dist))
                 continue
+
             try:
                 plugin = ep.load()
             except DistributionNotFound:
                 continue
             except VersionConflict as e:
                 raise pluggy.PluginValidationError(
-                    "Plugin %r could not be loaded: %s!" % (ep.name, e))
+                    "Plugin %r could not be loaded: %s!" % (ep.name, e)
+                )
             self.register(plugin, name=ep.name)
             self._plugin_distinfo.append((plugin, ep.dist))
             self._plugin_metadata[ep.name] = parse_pkg_metadata(ep.dist.key)