diff options
Diffstat (limited to 'cmds/external.go')
-rw-r--r-- | cmds/external.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/cmds/external.go b/cmds/external.go new file mode 100644 index 0000000..da24291 --- /dev/null +++ b/cmds/external.go @@ -0,0 +1,31 @@ +package cmds + +import ( + "fmt" + "os" + "os/exec" + "path" + + "gosh/global" +) + +func External(args []string) { + cmd := "" + found := false + for i := range global.Paths { + cmd = path.Join(global.Paths[i], args[0]) + if _, err := os.Stat(cmd); err == nil { + found = true + break + } + } + if found { + cmd := exec.Command(cmd, args[1:]...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + cmd.Run() + return + } + fmt.Fprintf(os.Stderr, "%s: Command not found\n", args[0]) +} |