diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2021-03-08 02:25:01 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2021-03-08 02:25:01 +0300 |
| commit | a6e6d848d6f719710a43ca015027bd93befb721d (patch) | |
| tree | 8cd94dfb8f466ca9403072c76883d95b41fbe0ef /pkg/server/help.go | |
| parent | 95ae97eb7eaa268a06bc2b90184eaed6342b3142 (diff) | |
add cmd, hook, socket help
Diffstat (limited to 'pkg/server/help.go')
| -rw-r--r-- | pkg/server/help.go | 77 |
1 files changed, 77 insertions, 0 deletions
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") +} |
