提交 7a505b44 作者: Matt Bell 提交者: Juan Batiz-Benet

Handle -h and --help differently (short text vs long text)

上级 c76a52e4
...@@ -92,13 +92,18 @@ func createRequest(args []string) (cmds.Request, *cmds.Command, error) { ...@@ -92,13 +92,18 @@ func createRequest(args []string) (cmds.Request, *cmds.Command, error) {
// handle parse error (which means the commandline input was wrong, // handle parse error (which means the commandline input was wrong,
// e.g. incorrect number of args, or nonexistent subcommand) // e.g. incorrect number of args, or nonexistent subcommand)
if err != nil { if err != nil {
help, _ := req.Option("help").Bool() var longHelp, shortHelp bool
if req != nil {
longHelp, _ = req.Option("help").Bool()
shortHelp, _ = req.Option("h").Bool()
}
// if the -help flag wasn't specified, show the error message // if the -help flag wasn't specified, show the error message
// or if a path was returned (user specified a valid subcommand), show the error message // or if a path was returned (user specified a valid subcommand), show the error message
// (this means there was an option or argument error) // (this means there was an option or argument error)
if path != nil && len(path) > 0 { if path != nil && len(path) > 0 {
if !help { if !longHelp && !shortHelp {
fmt.Printf(errorFormat, err) fmt.Printf(errorFormat, err)
} }
} }
...@@ -107,9 +112,10 @@ func createRequest(args []string) (cmds.Request, *cmds.Command, error) { ...@@ -107,9 +112,10 @@ func createRequest(args []string) (cmds.Request, *cmds.Command, error) {
root = commands.Root root = commands.Root
} }
// show the long help text if the help flag was specified, otherwise short help text // show the long help text if the -help flag was specified or we are at the root command
// otherwise, show short help text
helpFunc := cmdsCli.ShortHelp helpFunc := cmdsCli.ShortHelp
if help { if longHelp || len(path) == 0 {
helpFunc = cmdsCli.LongHelp helpFunc = cmdsCli.LongHelp
} }
...@@ -147,14 +153,23 @@ func createRequest(args []string) (cmds.Request, *cmds.Command, error) { ...@@ -147,14 +153,23 @@ func createRequest(args []string) (cmds.Request, *cmds.Command, error) {
} }
func handleHelpOption(req cmds.Request, root *cmds.Command) (helpTextDisplayed bool, err error) { func handleHelpOption(req cmds.Request, root *cmds.Command) (helpTextDisplayed bool, err error) {
help, err := req.Option("help").Bool() longHelp, err := req.Option("help").Bool()
if err != nil {
return false, err
}
shortHelp, err := req.Option("h").Bool()
if err != nil { if err != nil {
return false, err return false, err
} }
if !help { if !longHelp && !shortHelp {
return false, nil return false, nil
} }
err = cmdsCli.LongHelp("ipfs", root, req.Path(), os.Stdout) helpFunc := cmdsCli.ShortHelp
if longHelp || len(req.Path()) == 0 {
helpFunc = cmdsCli.LongHelp
}
err = helpFunc("ipfs", root, req.Path(), os.Stdout)
if err != nil { if err != nil {
return false, err return false, err
} }
......
...@@ -38,15 +38,13 @@ Plumbing commands: ...@@ -38,15 +38,13 @@ Plumbing commands:
block Interact with raw blocks in the datastore block Interact with raw blocks in the datastore
object Interact with raw dag nodes object Interact with raw dag nodes
Use "ipfs <command> --help" for more information about a command.
`, `,
Options: []cmds.Option{ Options: []cmds.Option{
cmds.StringOption("config", "c", "Path to the configuration file to use"), cmds.StringOption("config", "c", "Path to the configuration file to use"),
cmds.BoolOption("debug", "D", "Operate in debug mode"), cmds.BoolOption("debug", "D", "Operate in debug mode"),
cmds.BoolOption("help", "h", "Show the command help text"), cmds.BoolOption("help", "Show the full command help text"),
cmds.BoolOption("h", "Show a short version of the command help text"),
cmds.BoolOption("local", "L", "Run the command locally, instead of using the daemon"), cmds.BoolOption("local", "L", "Run the command locally, instead of using the daemon"),
}, },
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论