添加usage
This commit is contained in:
parent
caa86b5e79
commit
8679909ae0
16
main.go
16
main.go
|
@ -11,6 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type CmdDaemon struct {
|
type CmdDaemon struct {
|
||||||
|
Name string // app cli command name
|
||||||
SocketPath string // unix socket path
|
SocketPath string // unix socket path
|
||||||
cmds map[string]CmdHandler
|
cmds map[string]CmdHandler
|
||||||
}
|
}
|
||||||
|
@ -103,7 +104,7 @@ func (c *CmdDaemon) Listen() error {
|
||||||
cmdHandler, ok := c.cmds[req.Cmd]
|
cmdHandler, ok := c.cmds[req.Cmd]
|
||||||
if !ok {
|
if !ok {
|
||||||
_ = Write(conn, CmdResponse{
|
_ = Write(conn, CmdResponse{
|
||||||
Error: "unknown command: " + req.Cmd,
|
Error: "unknown command: " + req.Cmd + "\n" + c.Usage(),
|
||||||
Continue: false,
|
Continue: false,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
@ -113,12 +114,23 @@ func (c *CmdDaemon) Listen() error {
|
||||||
cmdConn := &CmdConn{Conn: conn, Id: req.Id}
|
cmdConn := &CmdConn{Conn: conn, Id: req.Id}
|
||||||
err = cmdHandler.Handle(cmdConn, req)
|
err = cmdHandler.Handle(cmdConn, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = cmdConn.WriteError(err, false)
|
_ = cmdConn.End(err.Error() + cmdHandler.Usage())
|
||||||
}
|
}
|
||||||
}(conn)
|
}(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) {
|
func (c *CmdDaemon) RegisterCmd(cmd string, handler CmdHandler) {
|
||||||
c.cmds[cmd] = handler
|
c.cmds[cmd] = handler
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue