buildr/internal/rpc/v1/plugin_manager_server.go

35 lines
1.1 KiB
Go
Raw Permalink Normal View History

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
}