summaryrefslogtreecommitdiff
path: root/main.go
blob: 52c7ba09fb69026ba6e578834b5802324e60162c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"

	"gosh/cmds"
)

func main() {
	r := bufio.NewReader(os.Stdin)

	for {
		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
		}

		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]
}