MCPcopy Create free account
hub / github.com/Chat2AnyLLM/code-agent-manager / Run

Function Run

internal/tools/launch.go:85–107  ·  view source on GitHub ↗

Run launches the tool's CLI binary inheriting stdio (interactive mode). Extra args are appended after the injected cli_parameters.

(launch LaunchEnv, args []string)

Source from the content-addressed store, hash-verified

83// Run launches the tool's CLI binary inheriting stdio (interactive mode).
84// Extra args are appended after the injected cli_parameters.
85func Run(launch LaunchEnv, args []string) (int, error) {
86 command := launch.Tool.LaunchCommand()
87 if command == "" {
88 return 1, fmt.Errorf("tools: no cli_command for tool %s", launch.Tool.Name)
89 }
90 if _, err := exec.LookPath(command); err != nil {
91 return 127, fmt.Errorf("tools: %s not found on PATH (install with `cam install %s`)", command, launch.Tool.Name)
92 }
93 final := append([]string{}, launch.Inject...)
94 final = append(final, args...)
95 cmd := exec.Command(command, final...)
96 cmd.Env = envMapToSlice(launch.Env)
97 cmd.Stdin = os.Stdin
98 cmd.Stdout = os.Stdout
99 cmd.Stderr = os.Stderr
100 if err := cmd.Run(); err != nil {
101 if exit, ok := err.(*exec.ExitError); ok {
102 return exit.ExitCode(), nil
103 }
104 return 1, err
105 }
106 return 0, nil
107}
108
109func envMapToSlice(env map[string]string) []string {
110 out := make([]string, 0, len(env))

Callers 1

launchCommandMethod · 0.92

Calls 3

envMapToSliceFunction · 0.85
LaunchCommandMethod · 0.80
RunMethod · 0.65

Tested by

no test coverage detected