You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by gc...@apache.org on 2023/11/27 16:10:29 UTC

(allura) branch master updated: [#8528] pass allura_command to allura.command_init entry point functions; document it

This is an automated email from the ASF dual-hosted git repository.

gcruz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git


The following commit(s) were added to refs/heads/master by this push:
     new a645264be [#8528] pass allura_command to allura.command_init entry point functions; document it
a645264be is described below

commit a645264be47c9a88a0e530d6f470be3c870717c3
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Tue Nov 21 09:51:16 2023 -0500

    [#8528] pass allura_command to allura.command_init entry point functions; document it
---
 Allura/allura/command/base.py         | 3 +++
 Allura/docs/development/extending.rst | 5 +++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/Allura/allura/command/base.py b/Allura/allura/command/base.py
index efa3add20..65b7c758e 100644
--- a/Allura/allura/command/base.py
+++ b/Allura/allura/command/base.py
@@ -112,7 +112,10 @@ class Command(command.Command, metaclass=MetaParserDocstring):
             # Probably being called from another script (websetup, perhaps?)
             log = logging.getLogger('allura.command')
             conf = tg.config
+
         self.tools = list(tg.app_globals.entry_points['tool'].values())
+
+        conf['allura_command'] = self
         for ep in h.iter_entry_points('allura.command_init'):
             log.info('Running command_init for %s', ep.name)
             ep.load()(conf)
diff --git a/Allura/docs/development/extending.rst b/Allura/docs/development/extending.rst
index 9129b462e..7a9484927 100644
--- a/Allura/docs/development/extending.rst
+++ b/Allura/docs/development/extending.rst
@@ -41,13 +41,14 @@ The available extension points for Allura are:
 * :class:`allura.lib.phone.PhoneService`
 * ``site_stats`` in the root API data.  Docs in :class:`allura.controllers.rest.RestController`
 * :mod:`allura.lib.package_path_loader` (for overriding templates)
-* ``[allura.timers]`` functions which return a list or single :class:`timermiddleware.Timer` which will be included in stats.log timings
+* ``[allura.timers]`` entry-point functions which return a list or single :class:`timermiddleware.Timer` which will be included in stats.log timings
 * :mod:`allura.ext.user_profile.user_main`
 * :mod:`allura.ext.personal_dashboard.dashboard_main`
-* ``[allura.middleware]`` classes, which are standard WSGI middleware.  They will receive the ``app`` instance and a ``config`` dict as constructor parameters.
+* ``[allura.middleware]`` entry-point classes, which are standard WSGI middleware.  They will receive the ``app`` instance and a ``config`` dict as constructor parameters.
   The middleware will be used for all requests.  By default the middleware wraps the base app directly and other middleware wrap around it.
   If your middleware needs to wrap around the other Allura middleware (except error handling), set ``when = 'outer'`` on your middleware.
 * :class:`allura.webhooks.WebhookSender`
+* ``[allura.command_init]`` entry-point functions which will be run before all commands like ``ensure_index``, ``taskd`` etc.  Receives a ``config`` dict with full config plus a ``allura_command`` key which references the current command's class.
 
 A listing of available 3rd-party extensions is at https://forge-allura.apache.org/p/allura/wiki/Extensions/