diff options
author | bpc2003 <wpesfriendnva@gmail.com> | 2025-05-23 23:35:03 -0400 |
---|---|---|
committer | bpc2003 <wpesfriendnva@gmail.com> | 2025-05-23 23:35:03 -0400 |
commit | 6179b0d37b0edaba065e79d8c8e303cd025ccd3d (patch) | |
tree | 671f46dba2e2c3d343356adae2c58bf737a622c8 | |
parent | 795b2cc767b0d6e34fad84de4fe656aafe672728 (diff) |
Add command handling
-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)) + } } } |