3. Writing a GNAThub plug-in
3.1. Location for user-defined plug-ins
Store your plug-ins in the extra directory. GNAThub attempts to
load all files in this directory except the ones whose name starts with an
underscore (_), which are expected to be support files referenced by
multiple plug-ins.
3.2. Structure
A GNAThub plug-in is a Python class that extends the
GNAThub.Plugin abstract class. It must override the
GNAThub.Plugin.execute() method and set the name property.
Additionally, the user can override the two following methods:
These will be called respectively before and after the
GNAThub.Plugin.execute() method.
3.3. Execution
The plug-in is discovered and loaded by the GNAThub driver unless explicitly disabled in the project file using the Plugins_Off attribute. If it remains enabled, it is executed along with the other plugins without any further action.
3.4. Logging
Plug-ins can integrate with the logging mechanism provided by the GNAThub API
through the log property of the GNAThub.Plugin class, e.g.:
self.log.debug('resource found at %s', resource)
Note that the GNAThub API provides its own logging.Handler
implementation to integrate with the standard Python logging facility meaning that one can use the
logging Python module directly and automatically benefit from this
integration. This becomes particularly useful when importing thirdparty modules
that already rely on this logging facility (e.g. Python requests).