Skip to content

Commit

Permalink
Merge pull request #2857 from gtardif/help_guides_link
Browse files Browse the repository at this point in the history
Help guides link
  • Loading branch information
tiborvass authored Dec 7, 2020
2 parents 37f4581 + d7697f9 commit 029ab02
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion cli/cobra.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ func setupCommonRootCommand(rootCmd *cobra.Command) (*cliflags.ClientOptions, *p
cobra.AddTemplateFunc("invalidPluginReason", invalidPluginReason)
cobra.AddTemplateFunc("isPlugin", isPlugin)
cobra.AddTemplateFunc("isExperimental", isExperimental)
cobra.AddTemplateFunc("hasAdditionalHelp", hasAdditionalHelp)
cobra.AddTemplateFunc("additionalHelp", additionalHelp)
cobra.AddTemplateFunc("decoratedName", decoratedName)

rootCmd.SetUsageTemplate(usageTemplate)
Expand All @@ -47,6 +49,8 @@ func setupCommonRootCommand(rootCmd *cobra.Command) (*cliflags.ClientOptions, *p
rootCmd.PersistentFlags().MarkShorthandDeprecated("help", "please use --help")
rootCmd.PersistentFlags().Lookup("help").Hidden = true

rootCmd.Annotations = map[string]string{"additionalHelp": brightCyan("To get more help with docker, check out guides at https://docs.docker.com/go/guides/")}

return opts, flags, helpCommand
}

Expand Down Expand Up @@ -185,7 +189,6 @@ var helpCommand = &cobra.Command{
if cmd == nil || e != nil || len(args) > 0 {
return errors.Errorf("unknown help topic: %v", strings.Join(args, " "))
}

helpFunc := cmd.HelpFunc()
helpFunc(cmd, args)
return nil
Expand All @@ -205,6 +208,27 @@ func isExperimental(cmd *cobra.Command) bool {
return experimental
}

func additionalHelp(cmd *cobra.Command) string {
if additionalHelp, ok := cmd.Annotations["additionalHelp"]; ok {
return additionalHelp
}
return ""
}

func hasAdditionalHelp(cmd *cobra.Command) bool {
return additionalHelp(cmd) != ""
}

var brightCyan = color("\033[1;96m%s\033[0m")

func color(colorString string) func(...interface{}) string {
sprint := func(args ...interface{}) string {
return fmt.Sprintf(colorString,
fmt.Sprint(args...))
}
return sprint
}

func isPlugin(cmd *cobra.Command) bool {
return cmd.Annotations[pluginmanager.CommandAnnotationPlugin] == "true"
}
Expand Down Expand Up @@ -360,6 +384,9 @@ Invalid Plugins:
Run '{{.CommandPath}} COMMAND --help' for more information on a command.
{{- end}}
{{- if hasAdditionalHelp .}}
{{ additionalHelp . }}
{{- end}}
`

var helpTemplate = `
Expand Down

0 comments on commit 029ab02

Please sign in to comment.