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 <[email protected]>
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/