Plugin Basics¶
Quickstart¶
The directory layout and example plugin below can be found in the pathspider-example GitHub repository. You can get going quickly by forking this repository and using that as a basis for plugin development. The repository has templates for a Synchronized, a Desynchronized and a Forge plugin.
Directory Layout¶
pathspider.plugins
is a namespace package. Namespace packages are a
mechanism for splitting a single Python package across multiple directories on
disk. One or more distributions may provide modules which exist inside the same
namespace package. The PATHspider distribution’s plugins are installed in
pathspider.plugins
, but also 3rd-party plugins can exist in this path
without being a part of the PATHspider distribution.
To get started you will need to create the required directory layout for PATHspider plugins, in this case for the Example plugin:
pathspider-example
└── pathspider
├── __init__.py
└── plugins
├── __init__.py
└── example.py
Inside both __init__.py files, you will need to add the following (and only the following):
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
Your plugin will be written in example.py
and this plugin will be
discovered automatically when you run PATHspider.
Running Your Plugin¶
In order to run your plugin, in the root of your plugin source tree run:
PYTHONPATH=. pspdr measure -i eth0 example </usr/share/doc/pathspider/examples/webtest.ndjson
Unless you install your plugin, you will need to add the plugin tree to the
PYTHONPATH
to allow the plugin to be discovered.