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 pluggy
 import click
 import click
 from flask import current_app
 from flask import current_app
+from flask.cli import with_appcontext
 
 
 from flaskbb.cli.main import flaskbb
 from flaskbb.cli.main import flaskbb
 
 
@@ -21,7 +22,9 @@ def plugins():
     pass
     pass
 
 
 
 
+
 @plugins.command("list")
 @plugins.command("list")
+@with_appcontext
 def list_plugins():
 def list_plugins():
     """Lists all installed plugins."""
     """Lists all installed plugins."""
     click.secho("[+] Listing all installed plugins...", fg="cyan")
     click.secho("[+] Listing all installed plugins...", fg="cyan")
@@ -32,19 +35,15 @@ def list_plugins():
         for plugin in enabled_plugins:
         for plugin in enabled_plugins:
             # plugin[0] is the module
             # plugin[0] is the module
             plugin = plugin[1]
             plugin = plugin[1]
-            click.secho("    - {} (version {})".format(
+            click.secho("\t- {} (version {})".format(
                 plugin.key, plugin.version), bold=True
                 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:
     if len(disabled_plugins) > 0:
         click.secho("[+] Disabled Plugins:", fg="yellow", bold=True)
         click.secho("[+] Disabled Plugins:", fg="yellow", bold=True)
         for plugin in disabled_plugins:
         for plugin in disabled_plugins:
             plugin = plugin[1]
             plugin = plugin[1]
-            click.secho("    - {} (version {})".format(
+            click.secho("\t- {} (version {})".format(
                 plugin.key, plugin.version), bold=True
                 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
 import pluggy
 from flaskbb.utils.helpers import parse_pkg_metadata
 from flaskbb.utils.helpers import parse_pkg_metadata
 
 
@@ -8,28 +21,31 @@ class FlaskBBPluginManager(pluggy.PluginManager):
     """
     """
 
 
     def __init__(self, project_name, implprefix=None):
     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._plugin_metadata = {}
         self._disabled_plugins = []
         self._disabled_plugins = []
 
 
     def load_setuptools_entrypoints(self, entrypoint_name):
     def load_setuptools_entrypoints(self, entrypoint_name):
         """Load modules from querying the specified setuptools entrypoint name.
         """Load modules from querying the specified setuptools entrypoint name.
         Return the number of loaded plugins. """
         Return the number of loaded plugins. """
-        from pkg_resources import (iter_entry_points, DistributionNotFound,
-                                   VersionConflict)
         for ep in iter_entry_points(entrypoint_name):
         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))
                 self._disabled_plugins.append((ep.name, ep.dist))
                 continue
                 continue
+
             try:
             try:
                 plugin = ep.load()
                 plugin = ep.load()
             except DistributionNotFound:
             except DistributionNotFound:
                 continue
                 continue
             except VersionConflict as e:
             except VersionConflict as e:
                 raise pluggy.PluginValidationError(
                 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.register(plugin, name=ep.name)
             self._plugin_distinfo.append((plugin, ep.dist))
             self._plugin_distinfo.append((plugin, ep.dist))
             self._plugin_metadata[ep.name] = parse_pkg_metadata(ep.dist.key)
             self._plugin_metadata[ep.name] = parse_pkg_metadata(ep.dist.key)