diff options
author | bpc2003 <wpesfriendnva@gmail.com> | 2025-05-24 13:32:57 -0400 |
---|---|---|
committer | bpc2003 <wpesfriendnva@gmail.com> | 2025-05-24 13:32:57 -0400 |
commit | 1a90e3410a9bdaf606a6124930a0913c07b44c87 (patch) | |
tree | 0c48ad326663b876ab44af37e5d2a0b8d95cca57 /main.go | |
parent | f8d0e88585226138b7b17e5f74105dd4abe63559 (diff) |
Split builtin commands to separate modules
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 44 |
1 files changed, 22 insertions, 22 deletions
@@ -4,36 +4,36 @@ import ( "bufio" "fmt" "os" - "os/exec" - "path" "strings" + + "gosh/cmds" ) func main() { r := bufio.NewReader(os.Stdin) - paths := strings.Split(os.Getenv("PATH"), ":") for { - found := false - cmd, _ := r.ReadString('\n') - 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 - } + d, _ := os.Getwd() + fmt.Printf("gosh-0.1:%s$ ", abbr(d)) + cmd, err := r.ReadString('\n') + if err != nil && err.Error() == "EOF" { + fmt.Println() + continue } - 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)) + + cmd = strings.TrimSuffix(cmd, "\n") + err = cmds.Eval(cmd) + if err != nil { + fmt.Fprintln(os.Stderr, err) } } } + +func abbr(dir string) string { + home, _ := os.UserHomeDir() + if dir == home { + return "~" + } + dirs := strings.Split(dir, "/") + return dirs[len(dirs)-1] +} |