mirror of
https://github.com/spf13/cobra
synced 2025-04-27 09:07:19 +00:00
Merge ddea02ea6b
into ceb39aba25
This commit is contained in:
commit
e9f5ae1404
3 changed files with 34 additions and 1 deletions
|
@ -72,6 +72,24 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string)
|
||||||
buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.UseLine()))
|
buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.UseLine()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if HasSubCommand(cmd) {
|
||||||
|
buf.WriteString("### Available commands\n\n")
|
||||||
|
|
||||||
|
children := cmd.Commands()
|
||||||
|
sort.Sort(byName(children))
|
||||||
|
|
||||||
|
for _, child := range children {
|
||||||
|
if !child.IsAvailableCommand() || child.IsAdditionalHelpTopicCommand() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
cname := name + " " + child.Name()
|
||||||
|
link := cname + ".md"
|
||||||
|
link = strings.ReplaceAll(link, " ", "_")
|
||||||
|
buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", child.Name(), linkHandler(link), child.Short))
|
||||||
|
}
|
||||||
|
buf.WriteString("\n")
|
||||||
|
}
|
||||||
|
|
||||||
if len(cmd.Example) > 0 {
|
if len(cmd.Example) > 0 {
|
||||||
buf.WriteString("### Examples\n\n")
|
buf.WriteString("### Examples\n\n")
|
||||||
buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.Example))
|
buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.Example))
|
||||||
|
|
|
@ -38,11 +38,12 @@ func TestGenMdDoc(t *testing.T) {
|
||||||
checkStringContains(t, output, rootCmd.Short)
|
checkStringContains(t, output, rootCmd.Short)
|
||||||
checkStringContains(t, output, echoSubCmd.Short)
|
checkStringContains(t, output, echoSubCmd.Short)
|
||||||
checkStringOmits(t, output, deprecatedCmd.Short)
|
checkStringOmits(t, output, deprecatedCmd.Short)
|
||||||
|
checkStringContains(t, output, "Available commands")
|
||||||
checkStringContains(t, output, "Options inherited from parent commands")
|
checkStringContains(t, output, "Options inherited from parent commands")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGenMdDocWithNoLongOrSynopsis(t *testing.T) {
|
func TestGenMdDocWithNoLongOrSynopsis(t *testing.T) {
|
||||||
// We generate on subcommand so we have both subcommands and parents.
|
// Use a simple subcommand without long and without synopsis, no own subcommands.
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
if err := GenMarkdown(dummyCmd, buf); err != nil {
|
if err := GenMarkdown(dummyCmd, buf); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
@ -75,6 +76,7 @@ func TestGenMdNoHiddenParents(t *testing.T) {
|
||||||
checkStringContains(t, output, rootCmd.Short)
|
checkStringContains(t, output, rootCmd.Short)
|
||||||
checkStringContains(t, output, echoSubCmd.Short)
|
checkStringContains(t, output, echoSubCmd.Short)
|
||||||
checkStringOmits(t, output, deprecatedCmd.Short)
|
checkStringOmits(t, output, deprecatedCmd.Short)
|
||||||
|
checkStringContains(t, output, "Available commands")
|
||||||
checkStringOmits(t, output, "Options inherited from parent commands")
|
checkStringOmits(t, output, "Options inherited from parent commands")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
13
doc/util.go
13
doc/util.go
|
@ -36,6 +36,19 @@ func hasSeeAlso(cmd *cobra.Command) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test to see if a given command has one or more subcommands
|
||||||
|
// Basically this is a test for a subcommand which is both not
|
||||||
|
// deprecated and not the autogenerated help command.
|
||||||
|
func HasSubCommand(cmd *cobra.Command) bool {
|
||||||
|
for _, c := range cmd.Commands() {
|
||||||
|
if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Temporary workaround for yaml lib generating incorrect yaml with long strings
|
// Temporary workaround for yaml lib generating incorrect yaml with long strings
|
||||||
// that do not contain \n.
|
// that do not contain \n.
|
||||||
func forceMultiLine(s string) string {
|
func forceMultiLine(s string) string {
|
||||||
|
|
Loading…
Add table
Reference in a new issue