Complete plugin system implementation providing extensible architecture for MarkiTect: 🏗️ **Core Plugin Architecture**: - BasePlugin abstract class with lifecycle management (initialize/cleanup) - Specialized plugin types: ProcessorPlugin, FormatterPlugin, ValidatorPlugin, ExporterPlugin, CommandPlugin - PluginMetadata system with version, dependencies, and type information - Plugin initialization and configuration validation 🔍 **Plugin Discovery & Management**: - PluginManager with automatic discovery from built-in modules and directories - PluginRegistry for centralized plugin registration and lifecycle management - Support for plugin loading, unloading, and reloading with configuration - Plugin discovery from multiple sources (built-in, directories, packages) 🛠️ **CLI Integration**: - markitect plugin-list: List all available plugins with metadata - markitect plugin-load: Load plugins with optional configuration - markitect plugin-unload: Unload plugins and cleanup resources - markitect plugin-info: Show detailed plugin information - markitect plugin-discover: Discover and refresh plugin catalog 📦 **Built-in Plugins**: - JSON/YAML/Table formatters for output formatting - Markdown/Text processors for content processing - Auto-registered via @register_plugin decorator - Comprehensive configuration options 🔧 **Developer Experience**: - @register_plugin decorator for easy plugin registration - Plugin configuration validation and error handling - Comprehensive API documentation with examples - Plugin development guide and best practices 📋 **Example Plugins**: - Advanced text processor with case conversion and pattern replacement - XML/CSV formatters demonstrating custom output formats - Complete examples showing plugin development patterns 🧪 **Test Coverage**: - 59 comprehensive tests covering all plugin functionality - Tests for plugin lifecycle, registration, discovery, and CLI integration - Error handling and edge case coverage - Built-in plugin validation Technical Implementation: - Plugin types: processor, formatter, validator, exporter, generator, importer, transformer, extension, backend, command - Configuration-driven plugin management with YAML/JSON support - Graceful error handling and plugin isolation - Plugin dependency validation and compatibility checking 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
31 lines
749 B
Python
31 lines
749 B
Python
"""
|
|
Decorators for plugin registration and management.
|
|
|
|
This module provides convenient decorators for registering plugins.
|
|
"""
|
|
|
|
from typing import Type, Optional
|
|
from .registry import plugin_registry
|
|
from .base import BasePlugin
|
|
|
|
|
|
def register_plugin(name: Optional[str] = None):
|
|
"""
|
|
Decorator to register a plugin class.
|
|
|
|
Args:
|
|
name: Optional plugin name (uses class name if not provided)
|
|
|
|
Returns:
|
|
Decorator function
|
|
|
|
Example:
|
|
@register_plugin("my_processor")
|
|
class MyProcessor(ProcessorPlugin):
|
|
pass
|
|
"""
|
|
def decorator(plugin_class: Type[BasePlugin]) -> Type[BasePlugin]:
|
|
plugin_registry.register(plugin_class, name)
|
|
return plugin_class
|
|
|
|
return decorator |