35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
package v1
|
|
|
|
import (
|
|
"context"
|
|
|
|
"connectrpc.com/connect"
|
|
|
|
remotev1 "code.icb4dc0.de/buildr/api/generated/remote/v1"
|
|
"code.icb4dc0.de/buildr/api/generated/remote/v1/rpcv1connect"
|
|
|
|
"code.icb4dc0.de/buildr/buildr/modules"
|
|
"code.icb4dc0.de/buildr/buildr/modules/plugin"
|
|
)
|
|
|
|
var _ rpcv1connect.PluginManagerServiceHandler = (*PluginManagerServiceServer)(nil)
|
|
|
|
type PluginManagerServiceServer struct {
|
|
registry *modules.TypeRegistry
|
|
}
|
|
|
|
func (p PluginManagerServiceServer) RegisterPluginModule(_ context.Context, request *connect.Request[remotev1.RegisterPluginModuleRequest]) (*connect.Response[remotev1.RegisterPluginModuleResponse], error) {
|
|
p.registry.RegisterModule(modules.ModuleFactoryFunc(func() modules.ModuleWithMeta {
|
|
return &modules.Metadata[plugin.Module]{
|
|
Module: plugin.Module{
|
|
PluginPayload: plugin.MemoryPayload(request.Msg.GetPluginPayload()),
|
|
ModuleSpec: make(map[string]any),
|
|
PluginType: request.Msg.ModuleRef.ModuleType,
|
|
PluginCategory: request.Msg.ModuleRef.ModuleCategory,
|
|
},
|
|
}
|
|
}))
|
|
|
|
return connect.NewResponse(new(remotev1.RegisterPluginModuleResponse)), nil
|
|
}
|