Show better help message

This commit is contained in:
Iwasaki Yudai 2015-08-16 19:30:44 -07:00
parent 6de9b0515f
commit 8cb0df7433
2 changed files with 29 additions and 10 deletions

View File

@ -20,9 +20,8 @@ go get github.com/yudai/gotty
# Usage # Usage
```
```sh Usage: gotty [options] <command> [<arguments...>]
Usage: gotty COMMAND_NAME [COMMAND_ARGUMENTS...]
``` ```
Run `gotty` with your prefered command as its arguments (e.g. `gotty top`). Run `gotty` with your prefered command as its arguments (e.g. `gotty top`).
@ -32,9 +31,9 @@ By default, gotty starts a web server at port 8080. Open the URL on your web bro
## Options ## Options
``` ```
--addr, -a IP address to listen at --addr, -a IP address to listen [$GOTTY_ADDR]
--port, -p "8080" Port number to listen at --port, -p "8080" Port number to listen [$GOTTY_PORT]
--permit-write, -w Permit write from client (BE CAREFUL) --permit-write, -w Permit clients to write to the TTY (BE CAREFUL) [$GOTTY_PERMIT_WRITE]
``` ```
By default, gotty doesn't allow clients to send any keystrokes or commands except terminal window resizing. When you want to permmit clients to write input to the PTY, add the `-w` option. However, accepting input from remote clients is dangerous for most commands. Make sure that only trusted clients can connect to your gotty server when activate this option. If you need interaction with the PTY, consider starting gotty with tmux or GNU Screen and run your main command on it. By default, gotty doesn't allow clients to send any keystrokes or commands except terminal window resizing. When you want to permmit clients to write input to the PTY, add the `-w` option. However, accepting input from remote clients is dangerous for most commands. Make sure that only trusted clients can connect to your gotty server when activate this option. If you need interaction with the PTY, consider starting gotty with tmux or GNU Screen and run your main command on it.

28
main.go
View File

@ -18,24 +18,24 @@ func main() {
cli.StringFlag{ cli.StringFlag{
Name: "addr, a", Name: "addr, a",
Value: "", Value: "",
Usage: "IP address to listen at", Usage: "IP address to listen",
EnvVar: "GOTTY_ADDR", EnvVar: "GOTTY_ADDR",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "port, p", Name: "port, p",
Value: "8080", Value: "8080",
Usage: "Port number to listen at", Usage: "Port number to listen",
EnvVar: "GOTTY_PORT", EnvVar: "GOTTY_PORT",
}, },
cli.BoolFlag{ cli.BoolFlag{
Name: "permit-write, w", Name: "permit-write, w",
Usage: "Permit write from client (BE CAREFUL)", Usage: "Permit clients to write to the TTY (BE CAREFUL)",
EnvVar: "GOTTY_PERMIT_WRITE", EnvVar: "GOTTY_PERMIT_WRITE",
}, },
} }
cmd.Action = func(c *cli.Context) { cmd.Action = func(c *cli.Context) {
if len(c.Args()) == 0 { if len(c.Args()) == 0 {
fmt.Println("No command given.\n") fmt.Println("Error: No command given.\n")
cli.ShowAppHelp(c) cli.ShowAppHelp(c)
os.Exit(1) os.Exit(1)
} }
@ -46,5 +46,25 @@ func main() {
os.Exit(2) os.Exit(2)
} }
} }
cmd.HideHelp = true
cli.AppHelpTemplate = `NAME:
{{.Name}} - {{.Usage}}
USAGE:
{{.Name}} [options] <command> [<arguments...>]
VERSION:
{{.Version}}{{if or .Author .Email}}
AUTHOR:{{if .Author}}
{{.Author}}{{if .Email}} - <{{.Email}}>{{end}}{{else}}
{{.Email}}{{end}}{{end}}
OPTIONS:
{{range .Flags}}{{.}}
{{end}}
`
cmd.Run(os.Args) cmd.Run(os.Args)
} }