From 86d2d026dd017a3075e1e1cb64245530cd7bcd81 Mon Sep 17 00:00:00 2001 From: Derek Parker Date: Tue, 20 May 2014 16:28:24 -0500 Subject: [PATCH] Add basic command implementation --- command/command.go | 38 ++++++++++++++++++++++++++++++++++++++ command/command_test.go | 19 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 command/command.go create mode 100644 command/command_test.go diff --git a/command/command.go b/command/command.go new file mode 100644 index 00000000..ef1f0857 --- /dev/null +++ b/command/command.go @@ -0,0 +1,38 @@ +package command + +import ( + "fmt" + "os" +) + +type cmdfunc func() error + +type Commands struct { + cmds map[string]cmdfunc +} + +func DebugCommands() *Commands { + cmds := map[string]cmdfunc{ + "exit": exitFunc, + } + + return &Commands{cmds} +} + +func (c *Commands) Find(cmdstr string) cmdfunc { + cmd, ok := c.cmds[cmdstr] + if !ok { + return noCmdAvailable + } + + return cmd +} + +func noCmdAvailable() error { + return fmt.Errorf("command not available") +} + +func exitFunc() error { + os.Exit(0) + return nil +} diff --git a/command/command_test.go b/command/command_test.go new file mode 100644 index 00000000..f6c96e62 --- /dev/null +++ b/command/command_test.go @@ -0,0 +1,19 @@ +package command + +import "testing" + +func TestCommandDefault(t *testing.T) { + var ( + cmds = Commands{make(map[string]cmdfunc)} + cmd = cmds.Find("non-existant-command") + ) + + err := cmd() + if err == nil { + t.Fatal("cmd() did not default") + } + + if err.Error() != "command not available" { + t.Fatal("wrong command output") + } +} -- GitLab