mirror of
https://github.com/spf13/cobra
synced 2024-11-24 14:47:12 +00:00
markdown docs: add section 'Available commands'
This commit is contained in:
parent
dcb405a939
commit
ddea02ea6b
3 changed files with 34 additions and 1 deletions
|
@ -70,6 +70,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))
|
||||||
|
|
|
@ -39,11 +39,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)
|
||||||
|
@ -76,6 +77,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…
Reference in a new issue