From a6e6d848d6f719710a43ca015027bd93befb721d Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Mon, 8 Mar 2021 02:25:01 +0300 Subject: add cmd, hook, socket help --- pkg/server/help.go | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 pkg/server/help.go (limited to 'pkg/server/help.go') diff --git a/pkg/server/help.go b/pkg/server/help.go new file mode 100644 index 0000000..16f2776 --- /dev/null +++ b/pkg/server/help.go @@ -0,0 +1,77 @@ +package server + +import ( + "fmt" + "io" + + "tunnel/pkg/server/hook" + "tunnel/pkg/server/opts" + "tunnel/pkg/server/socket" +) + +func showHookList(r *request) { + for _, h := range hook.GetList() { + r.Println(h) + } +} + +func showSocketList(r *request) { + for _, s := range socket.GetList() { + r.Println(s) + } +} + +func showUsage(r *request, name, desc string, param []opts.Param) { + r.Printf("usage: %s", name) + + for _, p := range param { + formatParamShort(r, p) + } + + r.Printf("\n\n%s", desc) +} + +func showHookHelp(r *request, name string) { + t := hook.GetType(name) + if t == nil { + r.Fatal("no such hook") + } + + showUsage(r, t.Name, t.Desc, t.Param) +} + +func formatParamShort(w io.Writer, p opts.Param) { + if !p.Required { + fmt.Fprint(w, "[") + } + fmt.Fprintf(w, ",%s", p.Name) + + if p.Kind != opts.Bool { + fmt.Fprintf(w, "=%s", p.Kind) + + if p.Default != "" { + fmt.Fprintf(w, "(%s)", p.Default) + } + } + + if !p.Required { + fmt.Fprint(w, "]") + } +} + +func showSocketHelp(r *request, name string) { + t := socket.GetType(name) + if t == nil { + r.Fatal("no such socket") + } + + showUsage(r, t.Name, t.Desc, t.Param) +} + +func init() { + newCmd("hook list", showHookList, "") + newCmd("hook help", showHookHelp, "hook-name") + + newCmd("socket list", showSocketList, "") + newCmd("socket help", showSocketHelp, "socket-name") +} -- cgit v1.2.3-70-g09d2