doc: hide hidden parent flags (#686)
* fixes #685
diff --git a/doc/man_docs.go b/doc/man_docs.go
index ce92332..baa4811 100644
--- a/doc/man_docs.go
+++ b/doc/man_docs.go
@@ -176,13 +176,13 @@
func manPrintOptions(buf *bytes.Buffer, command *cobra.Command) {
flags := command.NonInheritedFlags()
- if flags.HasFlags() {
+ if flags.HasAvailableFlags() {
buf.WriteString("# OPTIONS\n")
manPrintFlags(buf, flags)
buf.WriteString("\n")
}
flags = command.InheritedFlags()
- if flags.HasFlags() {
+ if flags.HasAvailableFlags() {
buf.WriteString("# OPTIONS INHERITED FROM PARENT COMMANDS\n")
manPrintFlags(buf, flags)
buf.WriteString("\n")
diff --git a/doc/man_docs_test.go b/doc/man_docs_test.go
index 62f85e4..2c400f5 100644
--- a/doc/man_docs_test.go
+++ b/doc/man_docs_test.go
@@ -47,6 +47,42 @@
checkStringContains(t, output, translate("Auto generated"))
}
+func TestGenManNoHiddenParents(t *testing.T) {
+ header := &GenManHeader{
+ Title: "Project",
+ Section: "2",
+ }
+
+ // We generate on a subcommand so we have both subcommands and parents
+ for _, name := range []string{"rootflag", "strtwo"} {
+ f := rootCmd.PersistentFlags().Lookup(name)
+ f.Hidden = true
+ defer func() { f.Hidden = false }()
+ }
+ buf := new(bytes.Buffer)
+ if err := GenMan(echoCmd, header, buf); err != nil {
+ t.Fatal(err)
+ }
+ output := buf.String()
+
+ // Make sure parent has - in CommandPath() in SEE ALSO:
+ parentPath := echoCmd.Parent().CommandPath()
+ dashParentPath := strings.Replace(parentPath, " ", "-", -1)
+ expected := translate(dashParentPath)
+ expected = expected + "(" + header.Section + ")"
+ checkStringContains(t, output, expected)
+
+ checkStringContains(t, output, translate(echoCmd.Name()))
+ checkStringContains(t, output, translate(echoCmd.Name()))
+ checkStringContains(t, output, "boolone")
+ checkStringOmits(t, output, "rootflag")
+ checkStringContains(t, output, translate(rootCmd.Name()))
+ checkStringContains(t, output, translate(echoSubCmd.Name()))
+ checkStringOmits(t, output, translate(deprecatedCmd.Name()))
+ checkStringContains(t, output, translate("Auto generated"))
+ checkStringOmits(t, output, "OPTIONS INHERITED FROM PARENT COMMANDS")
+}
+
func TestGenManNoGenTag(t *testing.T) {
echoCmd.DisableAutoGenTag = true
defer func() { echoCmd.DisableAutoGenTag = false }()
diff --git a/doc/md_docs.go b/doc/md_docs.go
index d7a2c2b..d76f6d5 100644
--- a/doc/md_docs.go
+++ b/doc/md_docs.go
@@ -29,7 +29,7 @@
func printOptions(buf *bytes.Buffer, cmd *cobra.Command, name string) error {
flags := cmd.NonInheritedFlags()
flags.SetOutput(buf)
- if flags.HasFlags() {
+ if flags.HasAvailableFlags() {
buf.WriteString("### Options\n\n```\n")
flags.PrintDefaults()
buf.WriteString("```\n\n")
@@ -37,7 +37,7 @@
parentFlags := cmd.InheritedFlags()
parentFlags.SetOutput(buf)
- if parentFlags.HasFlags() {
+ if parentFlags.HasAvailableFlags() {
buf.WriteString("### Options inherited from parent commands\n\n```\n")
parentFlags.PrintDefaults()
buf.WriteString("```\n\n")
diff --git a/doc/md_docs_test.go b/doc/md_docs_test.go
index b0fa68c..c060f32 100644
--- a/doc/md_docs_test.go
+++ b/doc/md_docs_test.go
@@ -25,6 +25,30 @@
checkStringContains(t, output, rootCmd.Short)
checkStringContains(t, output, echoSubCmd.Short)
checkStringOmits(t, output, deprecatedCmd.Short)
+ checkStringContains(t, output, "Options inherited from parent commands")
+}
+
+func TestGenMdNoHiddenParents(t *testing.T) {
+ // We generate on subcommand so we have both subcommands and parents.
+ for _, name := range []string{"rootflag", "strtwo"} {
+ f := rootCmd.PersistentFlags().Lookup(name)
+ f.Hidden = true
+ defer func() { f.Hidden = false }()
+ }
+ buf := new(bytes.Buffer)
+ if err := GenMarkdown(echoCmd, buf); err != nil {
+ t.Fatal(err)
+ }
+ output := buf.String()
+
+ checkStringContains(t, output, echoCmd.Long)
+ checkStringContains(t, output, echoCmd.Example)
+ checkStringContains(t, output, "boolone")
+ checkStringOmits(t, output, "rootflag")
+ checkStringContains(t, output, rootCmd.Short)
+ checkStringContains(t, output, echoSubCmd.Short)
+ checkStringOmits(t, output, deprecatedCmd.Short)
+ checkStringOmits(t, output, "Options inherited from parent commands")
}
func TestGenMdNoTag(t *testing.T) {
diff --git a/doc/rest_docs.go b/doc/rest_docs.go
index 4913e3e..051d8dc 100644
--- a/doc/rest_docs.go
+++ b/doc/rest_docs.go
@@ -29,7 +29,7 @@
func printOptionsReST(buf *bytes.Buffer, cmd *cobra.Command, name string) error {
flags := cmd.NonInheritedFlags()
flags.SetOutput(buf)
- if flags.HasFlags() {
+ if flags.HasAvailableFlags() {
buf.WriteString("Options\n")
buf.WriteString("~~~~~~~\n\n::\n\n")
flags.PrintDefaults()
@@ -38,7 +38,7 @@
parentFlags := cmd.InheritedFlags()
parentFlags.SetOutput(buf)
- if parentFlags.HasFlags() {
+ if parentFlags.HasAvailableFlags() {
buf.WriteString("Options inherited from parent commands\n")
buf.WriteString("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n")
parentFlags.PrintDefaults()
diff --git a/doc/rest_docs_test.go b/doc/rest_docs_test.go
index aa3186e..330a2e5 100644
--- a/doc/rest_docs_test.go
+++ b/doc/rest_docs_test.go
@@ -27,6 +27,29 @@
checkStringOmits(t, output, deprecatedCmd.Short)
}
+func TestGenRSTNoHiddenParents(t *testing.T) {
+ // We generate on a subcommand so we have both subcommands and parents
+ for _, name := range []string{"rootflag", "strtwo"} {
+ f := rootCmd.PersistentFlags().Lookup(name)
+ f.Hidden = true
+ defer func() { f.Hidden = false }()
+ }
+ buf := new(bytes.Buffer)
+ if err := GenReST(echoCmd, buf); err != nil {
+ t.Fatal(err)
+ }
+ output := buf.String()
+
+ checkStringContains(t, output, echoCmd.Long)
+ checkStringContains(t, output, echoCmd.Example)
+ checkStringContains(t, output, "boolone")
+ checkStringOmits(t, output, "rootflag")
+ checkStringContains(t, output, rootCmd.Short)
+ checkStringContains(t, output, echoSubCmd.Short)
+ checkStringOmits(t, output, deprecatedCmd.Short)
+ checkStringOmits(t, output, "Options inherited from parent commands")
+}
+
func TestGenRSTNoTag(t *testing.T) {
rootCmd.DisableAutoGenTag = true
defer func() { rootCmd.DisableAutoGenTag = false }()