From 0bf8e9a869f24eb6858a0baa87ff3d0780d12406 Mon Sep 17 00:00:00 2001 From: David Martin <13771411+dmartin35@users.noreply.github.com> Date: Thu, 11 Feb 2021 18:09:42 +0100 Subject: [PATCH] Check for disable auto gen tag on parents commands before filling man headers --- doc/man_docs.go | 8 ++++++++ doc/man_docs_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/doc/man_docs.go b/doc/man_docs.go index 916e361..f148c45 100644 --- a/doc/man_docs.go +++ b/doc/man_docs.go @@ -105,6 +105,14 @@ func GenMan(cmd *cobra.Command, header *GenManHeader, w io.Writer) error { if header == nil { header = &GenManHeader{} } + + if cmd.HasParent() { + cmd.VisitParents(func(c *cobra.Command) { + if c.DisableAutoGenTag { + cmd.DisableAutoGenTag = c.DisableAutoGenTag + } + }) + } if err := fillHeader(header, cmd.CommandPath(), cmd.DisableAutoGenTag); err != nil { return err } diff --git a/doc/man_docs_test.go b/doc/man_docs_test.go index aa3f5f2..ca35faa 100644 --- a/doc/man_docs_test.go +++ b/doc/man_docs_test.go @@ -111,6 +111,32 @@ func TestGenManNoGenTag(t *testing.T) { checkStringOmits(t, output, unexpected) } +func TestGenManNoGenTagWithDisabledParent(t *testing.T) { + // We set the flag on a parent to check it is used in its descendance + rootCmd.DisableAutoGenTag = true + defer func() { + echoCmd.DisableAutoGenTag = false + rootCmd.DisableAutoGenTag = false + }() + + header := &GenManHeader{ + Title: "Project", + Section: "2", + } + + // We generate on a subcommand so we have both subcommands and parents + buf := new(bytes.Buffer) + if err := GenMan(echoCmd, header, buf); err != nil { + t.Fatal(err) + } + output := buf.String() + + unexpected := translate("#HISTORY") + checkStringOmits(t, output, unexpected) + unexpected = translate("Auto generated by spf13/cobra") + checkStringOmits(t, output, unexpected) +} + func TestGenManSeeAlso(t *testing.T) { rootCmd := &cobra.Command{Use: "root", Run: emptyRun} aCmd := &cobra.Command{Use: "aaa", Run: emptyRun, Hidden: true} // #229