diff options
Diffstat (limited to 'client/command.go')
| -rw-r--r-- | client/command.go | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/client/command.go b/client/command.go index 6727114..4d0d5c1 100644 --- a/client/command.go +++ b/client/command.go @@ -50,23 +50,29 @@ func (a *application) doCommand(command string, args []string, text string) { if !a.connected { return } - argN := func(n int) { + argN := func(n int) bool { if len(args) != n { a.cmdWindow.err( "%s: expected %d arguments, was %d", command, n, len(args), ) + return false } + return true } switch command { case "nick": a.setNick(text) case "join": - argN(1) + if !argN(1) { + break + } if a.authenticated { a.join(args[0]) } case "leave": - argN(0) + if !argN(0) { + break + } win := a.windowCache.Get(a.currentWindow) switch win.(type) { case *channelWindow: @@ -74,10 +80,39 @@ func (a *application) doCommand(command string, args []string, text string) { } a.currentWindow = cmdWindowLocation {} case "create": - argN(1) + if !argN(1) { + break + } if a.authenticated { a.createChannel(args[0]) } + case "help": + var ( + hm helpMsg + ok bool + cmd string + ) + if len(args) == 0 { + hm, ok = getHelp("") + } else { + if !argN(1) { + break + } + cmd = args[0] + if cmd[0] == '/' { + if len(cmd) > 1 { + cmd = cmd[1:] + } else { + cmd = "" + } + } + hm, ok = getHelp(cmd) + } + if !ok { + a.cmdWindow.err("unknown command: /" + cmd) + } else { + a.cmdWindow.buf.Add(hm) + } case "quit": a.quit = true default: |
