summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorraven <citrons@mondecitronne.com>2025-10-20 20:08:52 -0500
committerraven <citrons@mondecitronne.com>2025-10-20 20:08:52 -0500
commitc4fe53ce77d0dc4cb204715ddd299c04a077c95b (patch)
tree51fe825c66e0c5d1b3599747b653a0c7cba21630 /client
parentc74096ad2e849442542a64e5bfbe8f2c170b0069 (diff)
allow some commands before connection
Diffstat (limited to 'client')
-rw-r--r--client/command.go85
1 files changed, 51 insertions, 34 deletions
diff --git a/client/command.go b/client/command.go
index 6079070..5ceb45b 100644
--- a/client/command.go
+++ b/client/command.go
@@ -51,9 +51,6 @@ func (a *application) processCommand(text string) {
}
func (a *application) doCommand(command string, args []string, text string) {
- if !a.connected {
- return
- }
argN := func(n int) bool {
if len(args) != n {
a.cmdWindow.err(
@@ -63,13 +60,54 @@ func (a *application) doCommand(command string, args []string, text string) {
}
return true
}
+
+ switch command {
+ case "quit":
+ a.quit = true
+ return
+ 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.Buffer().Add(hm)
+ }
+ return
+ }
+
+ if !a.connected {
+ return
+ }
+
switch command {
case "nick":
a.setNick(text)
+ return
case "join":
if a.authenticated {
a.join(text)
}
+ return
case "leave":
if !argN(0) {
break
@@ -80,12 +118,14 @@ func (a *application) doCommand(command string, args []string, text string) {
win.(*channelWindow).leaveChannel()
}
a.currentWindow = cmdWindowLocation {}
+ return
case "rename":
win := a.windowCache.Get(a.currentWindow)
switch win.(type) {
case *channelWindow:
win.(*channelWindow).renameChannel(text)
}
+ return
case "list":
if !argN(0) {
break
@@ -97,6 +137,7 @@ func (a *application) doCommand(command string, args []string, text string) {
a.cmdWindow.Buffer().Add(msg)
})
}
+ return
case "status":
if !a.authenticated {
break
@@ -109,6 +150,7 @@ func (a *application) doCommand(command string, args []string, text string) {
a.sendUpdate(proto.Object {
"u", a.uid, map[string]string {"status": text},
}, cb)
+ return
case "who":
a.lookup(text, "u", func(u *proto.Object, fail *proto.Fail) {
if fail != nil {
@@ -117,6 +159,7 @@ func (a *application) doCommand(command string, args []string, text string) {
a.cmdWindow.who(u.Id)
}
})
+ return
case "msg":
a.lookup(text, "u", func(u *proto.Object, fail *proto.Fail) {
if fail != nil {
@@ -125,6 +168,7 @@ func (a *application) doCommand(command string, args []string, text string) {
a.joinDirect([]proto.Object {*u})
}
})
+ return
case "msgall":
a.lookupAll(args, "u", func(us []proto.Object, fail *proto.Fail) {
if fail != nil {
@@ -133,42 +177,15 @@ func (a *application) doCommand(command string, args []string, text string) {
a.joinDirect(us)
}
})
+ return
case "create":
if a.authenticated {
a.createChannel(text)
}
- 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.Buffer().Add(hm)
- }
+ return
case "debug":
a.goTo(debugWindowLocation{})
- case "quit":
- a.quit = true
- default:
- a.cmdWindow.err("unknown command: /" + command)
+ return
}
+ a.cmdWindow.err("unknown command: /" + command)
}