(methodName string, ctx plugin.ExecContext, args ...any)
| 51 | } |
| 52 | |
| 53 | func (c *CmdInvoker) Call(methodName string, ctx plugin.ExecContext, args ...any) *CallResult { |
| 54 | serializedArgs, err := serialize(append([]any{DefaultContext.GetRemoteConfig()}, args...)...) |
| 55 | if err != nil { |
| 56 | return &CallResult{ |
| 57 | Err: err, |
| 58 | } |
| 59 | } |
| 60 | executable, inputArgs := c.resolveCmd(methodName, serializedArgs...) |
| 61 | cmdCtx := DefaultContext.GetContext() |
| 62 | cmd := exec.CommandContext(cmdCtx, executable, inputArgs...) |
| 63 | if c.workingPath != "" { |
| 64 | cmd.Dir = c.workingPath |
| 65 | } |
| 66 | response, err := utils.RunProcess(cmd, &utils.RunProcessOptions{ |
| 67 | OnStdout: func(b []byte) { |
| 68 | msg := string(b) |
| 69 | c.logRemoteMessage(ctx.GetLogger(), msg) |
| 70 | }, |
| 71 | OnStderr: func(b []byte) { |
| 72 | msg := string(b) |
| 73 | c.logRemoteError(ctx.GetLogger(), msg) |
| 74 | }, |
| 75 | UseFdOut: true, |
| 76 | }) |
| 77 | if err != nil { |
| 78 | return NewCallResult(nil, err) |
| 79 | } |
| 80 | err = response.GetError() |
| 81 | if err != nil { |
| 82 | return &CallResult{ |
| 83 | Err: errors.Default.Wrap(err, fmt.Sprintf("get error when invoking remote function %s", methodName)), |
| 84 | } |
| 85 | } |
| 86 | return NewCallResult(response.GetFdOut(), nil) |
| 87 | } |
| 88 | |
| 89 | func (c *CmdInvoker) Stream(methodName string, ctx plugin.ExecContext, args ...any) *MethodStream { |
| 90 | recvChannel := make(chan *StreamResult) |
no test coverage detected