From c4fe53ce77d0dc4cb204715ddd299c04a077c95b Mon Sep 17 00:00:00 2001 From: raven Date: Mon, 20 Oct 2025 20:08:52 -0500 Subject: allow some commands before connection --- client/command.go | 85 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 34 deletions(-) (limited to 'client/command.go') 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) } -- cgit v1.2.3