Write a helper function to load plugins in main/plugin_loader.go
:
package main
import (
"fmt"
"plugin"
)
func LoadPlugin(pluginPath string) (Processor, error) {
p, err := plugin.Open(pluginPath)
if err != nil {
return nil, fmt.Errorf("failed to open plugin: %w", err)
}
sym, err := p.Lookup("ProcessorImpl")
if err != nil {
return nil, fmt.Errorf("failed to find symbol: %w", err)
}
processor, ok := sym.(Processor)
if !ok {
return nil, fmt.Errorf("unexpected type from module symbol")
}
return processor, nil
}