From a81d37a4bbe54b771f5868bfe0381cd4177f0014 Mon Sep 17 00:00:00 2001 From: Gustavo Bazan Date: Tue, 3 Aug 2021 12:37:19 +0100 Subject: [PATCH] feat: make InitDefaultCompletionCmd public (#1467) --- command.go | 2 +- completions.go | 4 ++-- doc/man_docs.go | 1 + doc/man_docs_test.go | 2 +- doc/md_docs.go | 1 + doc/rest_docs.go | 1 + doc/yaml_docs.go | 1 + 7 files changed, 8 insertions(+), 4 deletions(-) diff --git a/command.go b/command.go index 90345a096f..dce77608d6 100644 --- a/command.go +++ b/command.go @@ -930,7 +930,7 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { // initialize help at the last point to allow for user overriding c.InitDefaultHelpCmd() // initialize completion at the last point to allow for user overriding - c.initDefaultCompletionCmd() + c.InitDefaultCompletionCmd() args := c.args diff --git a/completions.go b/completions.go index 43125f76f6..127c38ec32 100644 --- a/completions.go +++ b/completions.go @@ -578,12 +578,12 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p return flag, trimmedArgs, lastArg, nil } -// initDefaultCompletionCmd adds a default 'completion' command to c. +// InitDefaultCompletionCmd adds a default 'completion' command to c. // This function will do nothing if any of the following is true: // 1- the feature has been explicitly disabled by the program, // 2- c has no subcommands (to avoid creating one), // 3- c already has a 'completion' command provided by the program. -func (c *Command) initDefaultCompletionCmd() { +func (c *Command) InitDefaultCompletionCmd() { if c.CompletionOptions.DisableDefaultCmd || !c.HasSubCommands() { return } diff --git a/doc/man_docs.go b/doc/man_docs.go index 916e36144d..0eeaf4cf64 100644 --- a/doc/man_docs.go +++ b/doc/man_docs.go @@ -201,6 +201,7 @@ func manPrintOptions(buf io.StringWriter, command *cobra.Command) { func genMan(cmd *cobra.Command, header *GenManHeader) []byte { cmd.InitDefaultHelpCmd() cmd.InitDefaultHelpFlag() + cmd.InitDefaultCompletionCmd() // something like `rootcmd-subcmd1-subcmd2` dashCommandName := strings.Replace(cmd.CommandPath(), " ", "-", -1) diff --git a/doc/man_docs_test.go b/doc/man_docs_test.go index f3fe3d6139..c4258026e6 100644 --- a/doc/man_docs_test.go +++ b/doc/man_docs_test.go @@ -131,7 +131,7 @@ func TestGenManSeeAlso(t *testing.T) { if err := assertNextLineEquals(scanner, ".PP"); err != nil { t.Fatalf("First line after SEE ALSO wasn't break-indent: %v", err) } - if err := assertNextLineEquals(scanner, `\fBroot-bbb(1)\fP, \fBroot-ccc(1)\fP`); err != nil { + if err := assertNextLineEquals(scanner, `\fBroot-bbb(1)\fP, \fBroot-ccc(1)\fP, \fBroot-completion(1)\fP`); err != nil { t.Fatalf("Second line after SEE ALSO wasn't correct: %v", err) } } diff --git a/doc/md_docs.go b/doc/md_docs.go index 5181af8dc2..6f89fe2875 100644 --- a/doc/md_docs.go +++ b/doc/md_docs.go @@ -54,6 +54,7 @@ func GenMarkdown(cmd *cobra.Command, w io.Writer) error { func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error { cmd.InitDefaultHelpCmd() cmd.InitDefaultHelpFlag() + cmd.InitDefaultCompletionCmd() buf := new(bytes.Buffer) name := cmd.CommandPath() diff --git a/doc/rest_docs.go b/doc/rest_docs.go index 051d8dc832..77f49ec7ac 100644 --- a/doc/rest_docs.go +++ b/doc/rest_docs.go @@ -61,6 +61,7 @@ func GenReST(cmd *cobra.Command, w io.Writer) error { func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, string) string) error { cmd.InitDefaultHelpCmd() cmd.InitDefaultHelpFlag() + cmd.InitDefaultCompletionCmd() buf := new(bytes.Buffer) name := cmd.CommandPath() diff --git a/doc/yaml_docs.go b/doc/yaml_docs.go index 96e6ad721e..1b668eeda8 100644 --- a/doc/yaml_docs.go +++ b/doc/yaml_docs.go @@ -92,6 +92,7 @@ func GenYaml(cmd *cobra.Command, w io.Writer) error { func GenYamlCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error { cmd.InitDefaultHelpCmd() cmd.InitDefaultHelpFlag() + cmd.InitDefaultCompletionCmd() yamlDoc := cmdDoc{} yamlDoc.Name = cmd.CommandPath()