func (b *BasicRegistry) RegisterStoragePlugin(plugin StoragePlugin) error {
	b.lock.Lock()
	defer b.lock.Unlock()
	b.storagePlugin = plugin
	return nil
}
RegisterStoragePlugin is used to register storage plugins
package pluginregistry
import (
	"sync"
	"github.com/prometheus/client_golang/prometheus"
	"github.com/spf13/pflag"
	"github.com/bilibili-base/powermock/pkg/util/logger"
)
type Registry interface {
	MockPlugins() []MockPlugin
	RegisterMockPlugins(...MockPlugin) error
	MatchPlugins() []MatchPlugin
	RegisterMatchPlugins(...MatchPlugin) error
	StoragePlugin() StoragePlugin
	RegisterStoragePlugin(StoragePlugin) error
}
type BasicRegistry struct {
	cfg *Config
	matchPlugins  []MatchPlugin
	mockPlugins   []MockPlugin
	storagePlugin StoragePlugin
	registerer    prometheus.Registerer
	lock          sync.Mutex
	logger.Logger
}
type Config struct{}
func NewConfig() *Config {
	return &Config{}
}
func (c *Config) RegisterFlagsWithPrefix(prefix string, f *pflag.FlagSet) {
}
func (c *Config) Validate() error {
	return nil
}
func New(cfg *Config, logger logger.Logger, registerer prometheus.Registerer) (Registry, error) {
	service := &BasicRegistry{
		matchPlugins: []MatchPlugin{},
		mockPlugins:  []MockPlugin{},
		cfg:          cfg,
		registerer:   registerer,
		Logger:       logger.NewLogger("pluginsRegistry"),
	}
	return service, nil
}
func (b *BasicRegistry) MockPlugins() []MockPlugin {
	return b.mockPlugins
}
func (b *BasicRegistry) RegisterMockPlugins(plugins ...MockPlugin) error {
	b.lock.Lock()
	defer b.lock.Unlock()
	b.mockPlugins = append(b.mockPlugins, plugins...)
	return nil
}
func (b *BasicRegistry) RegisterMatchPlugins(plugins ...MatchPlugin) error {
	b.lock.Lock()
	defer b.lock.Unlock()
	b.matchPlugins = append(b.matchPlugins, plugins...)
	return nil
}
func (b *BasicRegistry) MatchPlugins() []MatchPlugin {
	return b.matchPlugins
}
func (b *BasicRegistry) StoragePlugin() StoragePlugin {
	return b.storagePlugin
}