summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go41
1 files changed, 38 insertions, 3 deletions
diff --git a/main.go b/main.go
index 52c7ba0..5334796 100644
--- a/main.go
+++ b/main.go
@@ -7,6 +7,7 @@ import (
"strings"
"gosh/cmds"
+ "gosh/global"
)
func main() {
@@ -22,9 +23,43 @@ func main() {
}
cmd = strings.TrimSuffix(cmd, "\n")
- err = cmds.Eval(cmd)
- if err != nil {
- fmt.Fprintln(os.Stderr, err)
+ args := strings.Split(cmd, " ")
+ switch (args[0]) {
+ case "cd":
+ if err := cmds.ChDir(args); err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ }
+ break
+ case "export":
+ if err := cmds.Export(args); err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ }
+ break
+ case "unset":
+ if err := cmds.Unset(args); err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ }
+ break
+ case "set":
+ if len(args) == 1 {
+ cmds.PrintEnv()
+ } else {
+ cmds.Set(args)
+ }
+ break
+ case "test", "[":
+ global.ReturnCode = cmds.Test(args)
+ break
+ case ":":
+ break
+ case "exit":
+ if err := cmds.Exit(args); err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ }
+ break
+ default:
+ cmds.External(args)
+ break
}
}
}