feat: implement comprehensive plugin architecture and extensions system (issue #19)
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>
This commit is contained in:
31
markitect/plugins/decorators.py
Normal file
31
markitect/plugins/decorators.py
Normal file
@@ -0,0 +1,31 @@
|
||||
"""
|
||||
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
|
||||
Reference in New Issue
Block a user