diff --git a/client.go b/client.go index c97e4b0..4bea3c6 100644 --- a/client.go +++ b/client.go @@ -344,7 +344,7 @@ func (c *client) simpleCommand(action string) { case "SEARCH": c.search("", "", "?") case "HELP", "?": - go c.Visit(helplocation) + c.Visit(helplocation) default: c.SetMessage(syntaxErrorMessage(action), true) c.DrawMessage() @@ -356,6 +356,14 @@ func (c *client) doCommand(action string, values []string) { case "C", "CHECK": c.displayConfigValue(values[0]) c.DrawMessage() + case "HELP", "?": + if val, ok := ERRS[values[0]]; ok { + c.SetMessage(val, false) + } else { + msg := fmt.Sprintf("%q is not a valid command; help syntax: %s", values[0], ERRS[action]) + c.SetMessage(msg, false) + } + c.DrawMessage() case "PURGE", "P": err := c.Certs.Purge(values[0]) if err != nil { diff --git a/cmdparse/parser.go b/cmdparse/parser.go index dc5870a..39e08ee 100644 --- a/cmdparse/parser.go +++ b/cmdparse/parser.go @@ -94,10 +94,10 @@ func (p *Parser) parseAction() (*Command, error) { case Value: cm.Target = t.val cm.Type = DOLINK - case Word: + case Word, Action: cm.Value = append(cm.Value, t.val) cm.Type = DO - case Action, Whitespace: + case Whitespace: return nil, fmt.Errorf("Found %q (%d), expected value", t.val, t.kind) } t = p.scan() diff --git a/help.go b/help.go index a9516f3..426d15f 100644 --- a/help.go +++ b/help.go @@ -23,6 +23,6 @@ var ERRS = map[string]string{ "SET": "`set [setting] [value]`", "W": "`w [target]`", "WRITE": "`write [target]`", - "?": "`?`", - "HELP": "`help`", + "?": "`? [[command]]`", + "HELP": "`help [[command]]`", }