diff options
-rwxr-xr-x | gosh | bin | 0 -> 2683382 bytes | |||
-rw-r--r-- | main.go | 25 |
2 files changed, 24 insertions, 1 deletions
Binary files differ @@ -4,13 +4,36 @@ import ( "bufio" "fmt" "os" + "os/exec" + "path" + "strings" ) func main() { r := bufio.NewReader(os.Stdin) + paths := strings.Split(os.Getenv("PATH"), ":") for { + found := false cmd, _ := r.ReadString('\n') - fmt.Print(cmd) + args := strings.Split(strings.TrimSpace(cmd), " ") + cmd = args[0] + + for i := range paths { + if _, err := os.Stat(path.Join(paths[i], cmd)); err == nil { + cmd = path.Join(paths[i], cmd) + found = true + break + } + } + if found { + c := exec.Command(cmd, args[1:]...) + output, err := c.CombinedOutput() + if err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + continue + } + fmt.Print(string(output)) + } } } |