cli: Make sure to add --help flag for subcommands. (#3773)

--help is now back and prints properly with command
help template.
This commit is contained in:
Harshavardhana 2017-02-19 20:46:06 -08:00 committed by GitHub
parent 7ea1de8245
commit 9eb8e375c5
7 changed files with 49 additions and 20 deletions

View File

@ -104,6 +104,10 @@ func registerApp() *cli.App {
registerCommand(updateCmd) registerCommand(updateCmd)
// Set up app. // Set up app.
cli.HelpFlag = cli.BoolFlag{
Name: "help, h",
Usage: "Show help.",
}
app := cli.NewApp() app := cli.NewApp()
app.Name = "Minio" app.Name = "Minio"
app.Author = "Minio.io" app.Author = "Minio.io"
@ -111,6 +115,8 @@ func registerApp() *cli.App {
app.Usage = "Cloud Storage Server." app.Usage = "Cloud Storage Server."
app.Description = `Minio is an Amazon S3 compatible object storage server. Use it to store photos, videos, VMs, containers, log files, or any blob of data as objects.` app.Description = `Minio is an Amazon S3 compatible object storage server. Use it to store photos, videos, VMs, containers, log files, or any blob of data as objects.`
app.Flags = globalFlags app.Flags = globalFlags
app.HideVersion = true // Hide `--version` flag, we already have `minio version`.
app.HideHelpCommand = true // Hide `help, h` command, we already have `minio --help`.
app.Commands = commands app.Commands = commands
app.CustomAppHelpTemplate = minioHelpTemplate app.CustomAppHelpTemplate = minioHelpTemplate
app.CommandNotFound = func(ctx *cli.Context, command string) { app.CommandNotFound = func(ctx *cli.Context, command string) {

View File

@ -79,7 +79,6 @@ EXAMPLES:
$ export MINIO_SECRET_KEY=miniostorage $ export MINIO_SECRET_KEY=miniostorage
$ {{.HelpName}} http://192.168.1.11/mnt/export/ http://192.168.1.12/mnt/export/ \ $ {{.HelpName}} http://192.168.1.11/mnt/export/ http://192.168.1.12/mnt/export/ \
http://192.168.1.13/mnt/export/ http://192.168.1.14/mnt/export/ http://192.168.1.13/mnt/export/ http://192.168.1.14/mnt/export/
`, `,
} }

View File

@ -46,7 +46,7 @@ var updateCmd = cli.Command{
{{.HelpName}} - {{.Usage}} {{.HelpName}} - {{.Usage}}
USAGE: USAGE:
{{.HelpName}} {{if .VisibleFlags}}[FLAGS]{{end}} {{.HelpName}}{{if .VisibleFlags}} [FLAGS]{{end}}
{{if .VisibleFlags}} {{if .VisibleFlags}}
FLAGS: FLAGS:
{{range .VisibleFlags}}{{.}} {{range .VisibleFlags}}{{.}}
@ -56,8 +56,10 @@ EXIT STATUS:
1 - New update is available. 1 - New update is available.
-1 - Error in getting update information. -1 - Error in getting update information.
VERSION: EXAMPLES:
` + Version + `{{"\n"}}`, 1. Check if there is a new update available:
$ {{.HelpName}}
`,
} }
const releaseTagTimeLayout = "2006-01-02T15-04-05Z" const releaseTagTimeLayout = "2006-01-02T15-04-05Z"

View File

@ -29,10 +29,15 @@ var versionCmd = cli.Command{
{{.HelpName}} - {{.Usage}} {{.HelpName}} - {{.Usage}}
USAGE: USAGE:
{{.HelpName}} {{.HelpName}}{{if .VisibleFlags}} [FLAGS]{{end}}
{{if .VisibleFlags}}
VERSION: FLAGS:
` + Version + `{{"\n"}}`, {{range .VisibleFlags}}{{.}}
{{end}}{{end}}
EXAMPLES:
1. Prints server version:
$ {{.HelpName}}
`,
} }
func mainVersion(ctx *cli.Context) { func mainVersion(ctx *cli.Context) {

20
vendor/github.com/minio/cli/app.go generated vendored
View File

@ -45,8 +45,10 @@ type App struct {
Flags []Flag Flags []Flag
// Boolean to enable bash completion commands // Boolean to enable bash completion commands
EnableBashCompletion bool EnableBashCompletion bool
// Boolean to hide built-in help command // Boolean to hide built-in help flag
HideHelp bool HideHelp bool
// Boolean to hide built-in help command
HideHelpCommand bool
// Boolean to hide built-in version flag and the VERSION section of help // Boolean to hide built-in version flag and the VERSION section of help
HideVersion bool HideVersion bool
// Populate on app startup, only gettable through method Categories() // Populate on app startup, only gettable through method Categories()
@ -144,9 +146,11 @@ func (a *App) Setup() {
} }
a.Commands = newCmds a.Commands = newCmds
if a.Command(helpCommand.Name) == nil && !a.HideHelp { if a.Command(helpCommand.Name) == nil {
a.Commands = append(a.Commands, helpCommand) if !a.HideHelpCommand {
if (HelpFlag != BoolFlag{}) { a.Commands = append(a.Commands, helpCommand)
}
if !a.HideHelp && (HelpFlag != BoolFlag{}) {
a.appendFlag(HelpFlag) a.appendFlag(HelpFlag)
} }
} }
@ -285,9 +289,11 @@ func (a *App) RunAndExitOnError() {
func (a *App) RunAsSubcommand(ctx *Context) (err error) { func (a *App) RunAsSubcommand(ctx *Context) (err error) {
// append help to commands // append help to commands
if len(a.Commands) > 0 { if len(a.Commands) > 0 {
if a.Command(helpCommand.Name) == nil && !a.HideHelp { if a.Command(helpCommand.Name) == nil {
a.Commands = append(a.Commands, helpCommand) if !a.HideHelpCommand {
if (HelpFlag != BoolFlag{}) { a.Commands = append(a.Commands, helpCommand)
}
if !a.HideHelp && (HelpFlag != BoolFlag{}) {
a.appendFlag(HelpFlag) a.appendFlag(HelpFlag)
} }
} }

View File

@ -51,8 +51,10 @@ type Command struct {
// removed n version 2 since it only works under specific conditions so we // removed n version 2 since it only works under specific conditions so we
// backport here by exposing it as an option for compatibility. // backport here by exposing it as an option for compatibility.
SkipArgReorder bool SkipArgReorder bool
// Boolean to hide built-in help command // Boolean to hide built-in help flag
HideHelp bool HideHelp bool
// Boolean to hide built-in help command
HideHelpCommand bool
// Boolean to hide this command from help or completion // Boolean to hide this command from help or completion
Hidden bool Hidden bool
@ -261,6 +263,7 @@ func (c Command) startApp(ctx *Context) error {
app.Commands = c.Subcommands app.Commands = c.Subcommands
app.Flags = c.Flags app.Flags = c.Flags
app.HideHelp = c.HideHelp app.HideHelp = c.HideHelp
app.HideHelpCommand = c.HideHelpCommand
app.Version = ctx.App.Version app.Version = ctx.App.Version
app.HideVersion = ctx.App.HideVersion app.HideVersion = ctx.App.HideVersion
@ -301,5 +304,13 @@ func (c Command) startApp(ctx *Context) error {
// VisibleFlags returns a slice of the Flags with Hidden=false // VisibleFlags returns a slice of the Flags with Hidden=false
func (c Command) VisibleFlags() []Flag { func (c Command) VisibleFlags() []Flag {
return visibleFlags(c.Flags) flags := c.Flags
if !c.HideHelp && (HelpFlag != BoolFlag{}) {
// append help to flags
flags = append(
flags,
HelpFlag,
)
}
return visibleFlags(flags)
} }

6
vendor/vendor.json vendored
View File

@ -163,10 +163,10 @@
"revisionTime": "2016-07-23T06:10:19Z" "revisionTime": "2016-07-23T06:10:19Z"
}, },
{ {
"checksumSHA1": "iDDGi0/U33hxoaQBgM3ww882lmU=", "checksumSHA1": "7PcmjItrQSx/1sZ6Q395LCzT+iw=",
"path": "github.com/minio/cli", "path": "github.com/minio/cli",
"revision": "cea7bbb0e52ac4d24c1de3f450545f38246075a2", "revision": "06bb2061ef1493532baf0444818eb5fb4c83caac",
"revisionTime": "2017-02-15T09:44:04Z" "revisionTime": "2017-02-20T03:57:28Z"
}, },
{ {
"checksumSHA1": "NBGyq2+iTtJvJ+ElG4FzHLe1WSY=", "checksumSHA1": "NBGyq2+iTtJvJ+ElG4FzHLe1WSY=",