summaryrefslogtreecommitdiff
path: root/cmds/external.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/external.go')
-rw-r--r--cmds/external.go31
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])
+}