From 1a90e3410a9bdaf606a6124930a0913c07b44c87 Mon Sep 17 00:00:00 2001 From: bpc2003 Date: Sat, 24 May 2025 13:32:57 -0400 Subject: Split builtin commands to separate modules --- main.go | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 82f5bbf..52c7ba0 100644 --- a/main.go +++ b/main.go @@ -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] +} -- cgit v1.2.3