diff options
author | bpc2003 <wpesfriendnva@gmail.com> | 2025-05-24 11:12:13 -0400 |
---|---|---|
committer | bpc2003 <wpesfriendnva@gmail.com> | 2025-05-24 11:12:13 -0400 |
commit | f8d0e88585226138b7b17e5f74105dd4abe63559 (patch) | |
tree | d4fa028cf322a04c39dabaa61d615ea48599dda3 /cmds/cmds.go | |
parent | 9dc1258ec342636e68b787cd3024dfbeb8a4955a (diff) |
Get started on cmds module
Diffstat (limited to 'cmds/cmds.go')
-rw-r--r-- | cmds/cmds.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/cmds/cmds.go b/cmds/cmds.go new file mode 100644 index 0000000..f61f2b8 --- /dev/null +++ b/cmds/cmds.go @@ -0,0 +1,53 @@ +package cmds + +import ( + "errors" + "os" + "strings" +) + +func Eval(cmd string) error { + args := strings.Split(cmd, " ") + switch args[0] { + case "cd": + if err := chDir(args); err != nil { + return err + } + break + case "export": + if err := export(args); err != nil { + return err + } + break + case "unset": + if len(args) == 1 || len(args) >= 3{ + return errors.New("unset: usage: name") + } + os.Unsetenv(args[1]) + break + case ":": + return nil + } + return nil +} + +func chDir(args []string) error { + var dir string + if len(args) == 1 { + dir, _ = os.UserHomeDir() + } else { + dir = args[1] + } + return os.Chdir(dir) +} + +func export(args []string) error { + if len(args) == 1 || len(args) >= 3 { + return errors.New("export: usage: name=value") + } + tmp := strings.Split(args[1], "=") + if len(tmp) != 2 { + return errors.New("export: usage: name=value") + } + return os.Setenv(tmp[0], tmp[1]) +} |