This commit is contained in:
Kasper Juul Hermansen 2022-11-05 23:19:09 +01:00
parent d01dff5774
commit 12880e9ab3
Signed by: kjuulh
GPG Key ID: 0F95C140730F2F23
4 changed files with 14 additions and 19 deletions

View File

@ -16,9 +16,14 @@ type About struct {
Commands []*AboutCommand `json:"commands"`
}
type DoCommand struct {
CommandName string `json:"commandName"`
Args map[string]string `json:"args"`
}
type Plugin interface {
About(ctx context.Context) (*About, error)
Do(ctx context.Context, commandName string, args map[string]string) error
Do(ctx context.Context, cmd *DoCommand) error
}
const PluginKey = "plugin"

View File

@ -10,22 +10,9 @@ type PluginClient struct {
client *rpc.Client
}
type DoRequest struct {
CommandName string `json:"commandName"`
Args map[string]string `json:"args"`
}
// Do implements Plugin
func (pc *PluginClient) Do(ctx context.Context, commandName string, args map[string]string) error {
req := &DoRequest{
CommandName: commandName,
Args: args,
}
//doReq, err := json.Marshal(req)
//if err != nil {
// return err
//}
err := pc.client.Call("Plugin.Do", req, new(any))
func (pc *PluginClient) Do(ctx context.Context, cmd *DoCommand) error {
err := pc.client.Call("Plugin.Do", cmd, new(string))
if err != nil {
return err
}

View File

@ -234,7 +234,10 @@ func (pr *PluginRegister) Do(ctx context.Context, clientName string, commandName
}
errgroup.Go(func() error {
return client.plugin.Do(ctx, commandName, args)
return client.plugin.Do(ctx, &DoCommand{
CommandName: commandName,
Args: args,
})
})
if err := errgroup.Wait(); err != nil {

View File

@ -9,7 +9,7 @@ type PluginServer struct {
Impl Plugin
}
func (ps *PluginServer) Do(args *DoRequest, resp *string) error {
func (ps *PluginServer) Do(args *DoCommand, resp *string) error {
//rawReq, ok := args.(string)
//if !ok {
// return errors.New("args is not a string")
@ -20,7 +20,7 @@ func (ps *PluginServer) Do(args *DoRequest, resp *string) error {
// return err
//}
if err := ps.Impl.Do(context.Background(), args.CommandName, args.Args); err != nil {
if err := ps.Impl.Do(context.Background(), args); err != nil {
return err
}
*resp = ""