| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -20,7 +20,9 @@ import (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"log"
 | 
					 | 
					 | 
					 | 
						"log"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"os"
 | 
					 | 
					 | 
					 | 
						"os"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"path/filepath"
 | 
					 | 
					 | 
					 | 
						"path/filepath"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"regexp"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"strings"
 | 
					 | 
					 | 
					 | 
						"strings"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"text/tabwriter"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"text/template"
 | 
					 | 
					 | 
					 | 
						"text/template"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/cli-docs-tool/annotation"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/cli-docs-tool/annotation"
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -28,6 +30,11 @@ import (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/spf13/pflag"
 | 
					 | 
					 | 
					 | 
						"github.com/spf13/pflag"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					)
 | 
					 | 
					 | 
					 | 
					)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					var (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						nlRegexp  = regexp.MustCompile(`\r?\n`)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						adjustSep = regexp.MustCompile(`\|:---(\s+)`)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// GenMarkdownTree will generate a markdown page for this command and all
 | 
					 | 
					 | 
					 | 
					// GenMarkdownTree will generate a markdown page for this command and all
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// descendants in the directory given.
 | 
					 | 
					 | 
					 | 
					// descendants in the directory given.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func (c *Client) GenMarkdownTree(cmd *cobra.Command) error {
 | 
					 | 
					 | 
					 | 
					func (c *Client) GenMarkdownTree(cmd *cobra.Command) error {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -144,6 +151,42 @@ func mdMakeLink(txt, link string, f *pflag.Flag, isAnchor bool) string {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return "[" + txt + "](" + link + ")"
 | 
					 | 
					 | 
					 | 
						return "[" + txt + "](" + link + ")"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					type mdTable struct {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						out       *strings.Builder
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						tabWriter *tabwriter.Writer
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func newMdTable(headers ...string) *mdTable {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						w := &strings.Builder{}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						t := &mdTable{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							out: w,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							// Using tabwriter.Debug, which uses "|" as separator instead of tabs,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							// which is what we want. It's a bit of a hack, but does the job :)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							tabWriter: tabwriter.NewWriter(w, 5, 5, 1, ' ', tabwriter.Debug),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						t.addHeader(headers...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return t
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func (t *mdTable) addHeader(cols ...string) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						t.AddRow(cols...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						_, _ = t.tabWriter.Write([]byte("|" + strings.Repeat(":---\t", len(cols)) + "\n"))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func (t *mdTable) AddRow(cols ...string) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						for i := range cols {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							cols[i] = mdEscapePipe(cols[i])
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						_, _ = t.tabWriter.Write([]byte("| " + strings.Join(cols, "\t ") + "\t\n"))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func (t *mdTable) String() string {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						_ = t.tabWriter.Flush()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return adjustSep.ReplaceAllStringFunc(t.out.String()+"\n", func(in string) string {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return strings.ReplaceAll(in, " ", "-")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func mdCmdOutput(cmd *cobra.Command, old string) (string, error) {
 | 
					 | 
					 | 
					 | 
					func mdCmdOutput(cmd *cobra.Command, old string) (string, error) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						b := &strings.Builder{}
 | 
					 | 
					 | 
					 | 
						b := &strings.Builder{}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -152,46 +195,41 @@ func mdCmdOutput(cmd *cobra.Command, old string) (string, error) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							desc = cmd.Long
 | 
					 | 
					 | 
					 | 
							desc = cmd.Long
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if desc != "" {
 | 
					 | 
					 | 
					 | 
						if desc != "" {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprintf(b, "%s\n\n", desc)
 | 
					 | 
					 | 
					 | 
							b.WriteString(desc + "\n\n")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if aliases := getAliases(cmd); len(aliases) != 0 {
 | 
					 | 
					 | 
					 | 
						if aliases := getAliases(cmd); len(aliases) != 0 {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "### Aliases\n\n")
 | 
					 | 
					 | 
					 | 
							b.WriteString("### Aliases\n\n")
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "`"+strings.Join(aliases, "`, `")+"`")
 | 
					 | 
					 | 
					 | 
							b.WriteString("`" + strings.Join(aliases, "`, `") + "`")
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "\n\n")
 | 
					 | 
					 | 
					 | 
							b.WriteString("\n\n")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if len(cmd.Commands()) != 0 {
 | 
					 | 
					 | 
					 | 
						if len(cmd.Commands()) != 0 {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "### Subcommands\n\n")
 | 
					 | 
					 | 
					 | 
							b.WriteString("### Subcommands\n\n")
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "| Name | Description |\n")
 | 
					 | 
					 | 
					 | 
							table := newMdTable("Name", "Description")
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "| --- | --- |\n")
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for _, c := range cmd.Commands() {
 | 
					 | 
					 | 
					 | 
							for _, c := range cmd.Commands() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								fmt.Fprintf(b, "| [`%s`](%s) | %s |\n", c.Name(), mdFilename(c), c.Short)
 | 
					 | 
					 | 
					 | 
								table.AddRow(fmt.Sprintf("[`%s`](%s)", c.Name(), mdFilename(c)), c.Short)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "\n\n")
 | 
					 | 
					 | 
					 | 
							b.WriteString(table.String() + "\n")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// add inherited flags before checking for flags availability
 | 
					 | 
					 | 
					 | 
						// add inherited flags before checking for flags availability
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						cmd.Flags().AddFlagSet(cmd.InheritedFlags())
 | 
					 | 
					 | 
					 | 
						cmd.Flags().AddFlagSet(cmd.InheritedFlags())
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if cmd.Flags().HasAvailableFlags() {
 | 
					 | 
					 | 
					 | 
						if cmd.Flags().HasAvailableFlags() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "### Options\n\n")
 | 
					 | 
					 | 
					 | 
							b.WriteString("### Options\n\n")
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "| Name | Type | Default | Description |\n")
 | 
					 | 
					 | 
					 | 
							table := newMdTable("Name", "Type", "Default", "Description")
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprint(b, "| --- | --- | --- | --- |\n")
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							cmd.Flags().VisitAll(func(f *pflag.Flag) {
 | 
					 | 
					 | 
					 | 
							cmd.Flags().VisitAll(func(f *pflag.Flag) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if f.Hidden {
 | 
					 | 
					 | 
					 | 
								if f.Hidden {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									return
 | 
					 | 
					 | 
					 | 
									return
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								isLink := strings.Contains(old, "<a name=\""+f.Name+"\"></a>")
 | 
					 | 
					 | 
					 | 
								isLink := strings.Contains(old, "<a name=\""+f.Name+"\"></a>")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								fmt.Fprint(b, "| ")
 | 
					 | 
					 | 
					 | 
								var name string
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if f.Shorthand != "" {
 | 
					 | 
					 | 
					 | 
								if f.Shorthand != "" {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									name := "`-" + f.Shorthand + "`"
 | 
					 | 
					 | 
					 | 
									name = mdMakeLink("`-"+f.Shorthand+"`", f.Name, f, isLink)
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									name = mdMakeLink(name, f.Name, f, isLink)
 | 
					 | 
					 | 
					 | 
									name += ", "
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									fmt.Fprintf(b, "%s, ", name)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								name := "`--" + f.Name + "`"
 | 
					 | 
					 | 
					 | 
								name += mdMakeLink("`--"+f.Name+"`", f.Name, f, isLink)
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								name = mdMakeLink(name, f.Name, f, isLink)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								var ftype string
 | 
					 | 
					 | 
					 | 
								var ftype string
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if f.Value.Type() != "bool" {
 | 
					 | 
					 | 
					 | 
								if f.Value.Type() != "bool" {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -216,9 +254,9 @@ func mdCmdOutput(cmd *cobra.Command, old string) (string, error) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								} else if cd, ok := cmd.Annotations[annotation.CodeDelimiter]; ok {
 | 
					 | 
					 | 
					 | 
								} else if cd, ok := cmd.Annotations[annotation.CodeDelimiter]; ok {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									usage = strings.ReplaceAll(usage, cd, "`")
 | 
					 | 
					 | 
					 | 
									usage = strings.ReplaceAll(usage, cd, "`")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								fmt.Fprintf(b, "%s | %s | %s | %s |\n", mdEscapePipe(name), mdEscapePipe(ftype), mdEscapePipe(defval), mdEscapePipe(usage))
 | 
					 | 
					 | 
					 | 
								table.AddRow(name, ftype, defval, mdReplaceNewline(usage))
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							})
 | 
					 | 
					 | 
					 | 
							})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprintln(b, "")
 | 
					 | 
					 | 
					 | 
							b.WriteString(table.String())
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return b.String(), nil
 | 
					 | 
					 | 
					 | 
						return b.String(), nil
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -227,3 +265,7 @@ func mdCmdOutput(cmd *cobra.Command, old string) (string, error) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func mdEscapePipe(s string) string {
 | 
					 | 
					 | 
					 | 
					func mdEscapePipe(s string) string {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return strings.ReplaceAll(s, `|`, `\|`)
 | 
					 | 
					 | 
					 | 
						return strings.ReplaceAll(s, `|`, `\|`)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func mdReplaceNewline(s string) string {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return nlRegexp.ReplaceAllString(s, "<br>")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
 
 |