summaryrefslogtreecommitdiff
path: root/client/command.go
diff options
context:
space:
mode:
authorcitrons <citrons@mondecitronne.com>2025-06-01 17:15:44 -0500
committercitrons <citrons@mondecitronne.com>2025-06-01 17:15:44 -0500
commitccea376f5750629c2a82b1f24251e52756876f5d (patch)
tree0f47b09325d56625bbae4596ace2a5f63bb5985e /client/command.go
parent397b8de9c2a590f98c1a3255a6dbe7570a7b70b8 (diff)
help command
Diffstat (limited to 'client/command.go')
-rw-r--r--client/command.go43
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: