添加usage

This commit is contained in:
程广 2025-06-05 09:45:05 +08:00
parent caa86b5e79
commit 8679909ae0
1 changed files with 14 additions and 2 deletions

16
main.go
View File

@ -11,6 +11,7 @@ import (
)
type CmdDaemon struct {
Name string // app cli command name
SocketPath string // unix socket path
cmds map[string]CmdHandler
}
@ -103,7 +104,7 @@ func (c *CmdDaemon) Listen() error {
cmdHandler, ok := c.cmds[req.Cmd]
if !ok {
_ = Write(conn, CmdResponse{
Error: "unknown command: " + req.Cmd,
Error: "unknown command: " + req.Cmd + "\n" + c.Usage(),
Continue: false,
})
return
@ -113,12 +114,23 @@ func (c *CmdDaemon) Listen() error {
cmdConn := &CmdConn{Conn: conn, Id: req.Id}
err = cmdHandler.Handle(cmdConn, req)
if err != nil {
_ = cmdConn.WriteError(err, false)
_ = cmdConn.End(err.Error() + cmdHandler.Usage())
}
}(conn)
}
}
func (c *CmdDaemon) Usage() string {
usage := fmt.Sprintf("Usage: %s [options] <command> [args...]\n\n", c.Name)
usage += "Options:\n"
usage += " -d, --debug Run command in debug mode\n\n"
usage += "Commands:\n"
for cmd, handler := range c.cmds {
usage += fmt.Sprintf(" %-10s %s\n", cmd, handler.Description())
}
return usage
}
func (c *CmdDaemon) RegisterCmd(cmd string, handler CmdHandler) {
c.cmds[cmd] = handler
}