diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 41 |
1 files changed, 38 insertions, 3 deletions
@@ -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 } } } |