From ccea376f5750629c2a82b1f24251e52756876f5d Mon Sep 17 00:00:00 2001 From: citrons Date: Sun, 1 Jun 2025 17:15:44 -0500 Subject: help command --- client/command.go | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) (limited to 'client/command.go') 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: -- cgit v1.2.3