buildr/internal/rpc/v1/plugin_manager_server.go
Peter 34c431790e
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
refactor: use connect-go instead of regular Google gRPC
- support binary name for plugins
- register plugins for container jobs
2023-09-12 18:43:34 +02:00

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
}