Allow displaying help for extended hub commands: `hub help hub-<CMD>`

For compatibility with git, `hub help checkout` will display the help
for git-checkout and there will be no information about hub extensions
to this command.

Now with `hub help hub-checkout`, hub will print the help text from
hub's extension to git-checkout.
This commit is contained in:
Mislav Marohnić 2016-01-24 20:35:16 +11:00
Родитель 0a45aa8ddc
Коммит 0a789d77dd
1 изменённых файлов: 19 добавлений и 6 удалений

Просмотреть файл

@ -29,6 +29,12 @@ func runHelp(helpCmd *Command, args *Args) {
os.Exit(0) os.Exit(0)
} }
if args.HasFlags("-a", "--all") {
args.After("echo", "\nhub custom commands\n")
args.After("echo", " ", strings.Join(customCommands(), " "))
return
}
command := args.FirstParam() command := args.FirstParam()
if command == "hub" { if command == "hub" {
@ -42,14 +48,21 @@ func runHelp(helpCmd *Command, args *Args) {
} }
} }
c := CmdRunner.Lookup(command) if c := lookupCmd(command); c != nil {
if c != nil && !c.GitExtension {
ui.Println(c.HelpText()) ui.Println(c.HelpText())
os.Exit(0) os.Exit(0)
} else if c == nil { }
if args.HasFlags("-a", "--all") { }
args.After("echo", "\nhub custom commands\n")
args.After("echo", " ", strings.Join(customCommands(), " ")) func lookupCmd(name string) *Command {
if strings.HasPrefix(name, "hub-") {
return CmdRunner.Lookup(strings.TrimPrefix(name, "hub-"))
} else {
cmd := CmdRunner.Lookup(name)
if cmd != nil && !cmd.GitExtension {
return cmd
} else {
return nil
} }
} }
} }