Files
overub/docs/PLUGIN_GUIDE.md
2025-12-21 17:12:32 +01:00

1.1 KiB

OverUB Plugin Guide

Structure

A plugin is a Python package placed in plugins/external/<plugin_name> with an __init__.py file.

Minimal Plugin

from core.plugin import Plugin

class HelloPlugin(Plugin):
    name = "hello"
    version = "1.0.0"
    author = "you"
    description = "Simple hello plugin"

    async def on_load(self):
        self.log.info("Hello plugin loaded")

Configuration Schema

class MyPlugin(Plugin):
    name = "my_plugin"
    config_schema = {
        "enabled": bool,
        "settings": dict,
    }

Secrets

value = self.get_secret("api_key")

Sandbox

Use self.context.sandbox for safe file operations when possible.

Loading

Enable plugins in config/config.yml and place the plugin package in plugins/external.

Testing

Use core/testing.py as a base for plugin test scaffolding.

CLI

  • python -m __main__ create-plugin <name>
  • python -m __main__ validate-plugin <path>
  • python -m __main__ build-plugin <path>
  • python -m __main__ docs-plugin <path>
  • python -m __main__ test-plugin <path>