summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-05-24 13:32:57 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-05-24 13:32:57 -0400
commit1a90e3410a9bdaf606a6124930a0913c07b44c87 (patch)
tree0c48ad326663b876ab44af37e5d2a0b8d95cca57 /main.go
parentf8d0e88585226138b7b17e5f74105dd4abe63559 (diff)
Split builtin commands to separate modules
Diffstat (limited to 'main.go')
-rw-r--r--main.go44
1 files changed, 22 insertions, 22 deletions
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]
+}